我的项目中有这样的东西:
add_custom_command(OUTPUT somefile)
add_custom_target(tgt ALL DEPENDS somefile)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/somefile DESTINATION somedir)
Run Code Online (Sandbox Code Playgroud)
这工作正常,但make由于ALLadd_custom_target()中的关键字,我的命令正在运行.我想要的是让CMake只在make install发出时才运行此命令,而不是在构建期间运行.
如果我删除ALL关键字,默认情况下不会构建整个目标,因此不会生成somefile并make install失败.
一种可能的解决方案是让make install命令调用make tgt副作用.这可以通过使用install命令的CODE签名来完成:
add_custom_command(OUTPUT somefile)
add_custom_target(tgt DEPENDS somefile)
install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" --build \"${CMAKE_CURRENT_BINARY_DIR}\" --target tgt)")
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/somefile DESTINATION somedir)
Run Code Online (Sandbox Code Playgroud)
该execute_process所调用CMake的构建目标tgt之前somefile安装的.
| 归档时间: |
|
| 查看次数: |
3382 次 |
| 最近记录: |