【发布时间】:2015-10-11 08:00:26
【问题描述】:
假设我有一个包含两个独立子项目的项目。如果我对 cmake 的理解正确,想法是让一个根 CMakeLists.txt 定义一个 project(...),然后使用 add_subdirectory(...) 包含子项目。每个子项目都有自己的CMakeLists.txt 定义自己的项目。这种方式可以一起构建项目(使用根 cmake 文件)或单独构建(使用子项目 cmake 文件)。
我现在想更改CMAKE_CONFIGURATION_TYPES。我应该在根 CMakeLists.txt 还是在每个子项目中执行此操作,还是两者都执行?
在根目录中更改它意味着单独构建子项目会提供错误的配置类型;其他选项将复制 cmake 代码。我想我在这里遗漏了一些东西。
【问题讨论】:
-
为什么要更改CMAKE_CONFIGURATION_TYPES,你想怎么修改?
-
我想要 Release、Debug 和 Profile,而不是 Release、Debug 和 RelWithDebugInfo。
-
我目前这样做:
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;Profile") set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING "List of supported configurations.") mark_as_advanced(CMAKE_CONFIGURATION_TYPES) if(NOT CMAKE_BUILD_TYPE) message("Defaulting to release build.") set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: ${CMAKE_CONFIGURATION_TYPES}." FORCE) endif() -
那么你真的需要在根项目和子项目中做同样的事情。您唯一能做的就是将配置机器分解为从每个 CMakeLists.txt 调用的外部宏
-
谢谢。两次定义事物会不会有任何问题,即我是否必须注意不要覆盖事物?你想把你的评论变成答案吗?
标签: cmake subproject