如何自动添加 CMake INSTALL 项目以构建配置

How to add CMake INSTALL project automatically to build configurations

我试图在编译时使用 CMake 将几个 .ini 文件部署到二进制目录。我通过以下几行来做到这一点(手动输入;如果您发现打字错误,请随时编辑)

FILE(GLOB INI_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../misc/*.ini")
INSTALL(FILES ${INI_FILES} CONFIGURATIONS Debug DESTINATION ${CMAKE_BINARY_DIR}/bin/Debug)
INSTALL(FILES ${INI_FILES} CONFIGURATIONS Release DESTINATION ${CMAKE_BINARY_DIR}/bin/Release)

这会在我的 Visual Studio 解决方案中正确生成一个 INSTALL 项目,如果手动 'compiled' 则该项目可以工作。但是,该项目不是解决方案的调试和发布构建配置的一部分,这意味着它不会在编译解决方案时执行。有没有办法手动将项目添加到 CMake 的构建配置中?

或者这不是故意的,我需要以不同的方式调用 CMake?

我在 Visual Studio 2013 中使用 CMake 3.0.2。 我正在生成我的 Visual Studio 解决方案,如下所示:

"%VS120COMNTOOLS%..\..\VC\vcvarsall" amd64
cmake .. -G "Visual Studio 12 2013 Win64"

是的,您可以在构建项目之前添加自定义命令来复制 .ini 文件。假设你的构建目标被命名为 my_target,你可以这样做:

FILE(GLOB INI_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../misc/*.ini")
add_executable(my_target test.cpp)
foreach(FN ${INI_FILES})
    add_custom_command(TARGET my_target
        PRE_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy "${FN}" "${CMAKE_CURRENT_BINARY_DIR}")
endforeach()

它基本上使用 cmake 将 .ini 文件单独复制到构建目录。