【发布时间】:2012-08-29 23:40:46
【问题描述】:
我希望有两个项目基于相同的源文件构建,第二个项目只有一个小子集,以及一些不同的定义和构建标志。
当我尝试这样的事情时:
SET (this_target PROJECT1)
PROJECT(${this_target})
...
ADD_EXECUTABLE(#{this_target} ...)
SET (this_target PROJECT2)
PROJECT(${this_target})
...
add_definitions (-DMYDEFINE)
TARGET_LINK_LIBRARIES( ${this_target} -myflag )
ADD_EXECUTABLE(#{this_target} ...)
它最终创建了两个项目,看似正确的源文件等,但出于某种原因,至少在 Visual Studio 2010 中,这两个项目似乎都在链接器标志中定义了 MYDEFINE 和 myflag。
我不确定为什么它似乎适用于文件,但不适用于标志。
【问题讨论】:
-
在单个 CMakeList.txt 文件中不应有超过 1 个 PROJECT()。
-
除了用 CMakeLists.txt 文件创建一个几乎空的单独目录之外,我还能做些什么吗?
-
通常我将每个目标放在自己的文件夹中,但是您可以删除第二个 PROJECT() 并将第二个目标中使用的变量名称更改为 this_target 以外的名称。
标签: visual-studio-2010 build cmake