如何自动添加 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 文件单独复制到构建目录。
我试图在编译时使用 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 文件单独复制到构建目录。