【发布时间】:2019-02-09 16:38:56
【问题描述】:
我的项目结构如下
ProjDir
| - CMakeLists.txt
| - SubDir1
| | - CMakeLists.txt
| | - src
| | - inc
| - SubDir2
| | - CMakeLists.txt
| | - src
| | - inc
我在每个子目录中都有目标,子目录包含在主CMakeLists.txt中,如下所示。
add_subdirectory(${CMAKE_SOURCE_DIR}/SubDir1)
add_subdirectory(${CMAKE_SOURCE_DIR}/SubDir2)
我在每个子目录中的目标都安装了 cmake 函数install。这些命令位于各个子目录的CMakeLists.txt 中,并且是针对每个目标指定的(参见this 帖子)。
install(TARGETS exe1 DESTINATION ${CMAKE_INSTALL_PREFIX}/bin CONFIGURATIONS Release)
虽然我能够成功编译,但install 命令不会将二进制文件移动到${CMAKE_INSTALL_PREFIX}/bin,而是在生成输出后完成:
Install the project...
-- Install configuration: ""
我该如何解决这个问题?
【问题讨论】:
-
您可以从
DESTINATION中省略${CMAKE_INSTALL_PREFIX}/。文档状态:“如果给出了相对路径,则相对于 CMAKE_INSTALL_PREFIX 变量的值进行解释。”由于您限制了要安装的 CONFIGURATIONS,您是在构建 Release 而不是 Debug?尝试将其删除以进行测试。 -
想到的另一件事,你的项目调用在哪里?只有顶级目录 CMakeLists.txt 应该包含项目调用。
-
我在每个子目录中进行项目调用。我现在已经纠正了这一点。另外,我删除了
CONFIGURATIONS。这两件事解决了这个问题。
标签: cmake