我想有两个项目构建相同的源文件,第二个只有一个小子集,还有一些不同的定义和构建标志。一个CMakeLists.txt中的多个CMake项目
当我尝试这样的事:
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()。 – drescherjm
除了用CMakeLists.txt文件创建一个单独的近空目录外,还有什么可以做的吗? – Arelius
通常我会将每个目标放在它自己的文件夹中,但是您可以删除第二个PROJECT()并将第二个目标中使用的变量的名称更改为this_target以外的其他名称。 – drescherjm