gpt4 book ai didi

visual-studio-2010 - 一个 CMakeLists.txt 中的多个 CMake 项目

转载 作者:行者123 更新时间:2023-12-04 18:47:20 24 4
gpt4 key购买 nike

我希望有两个基于相同源文件构建的项目,第二个项目只有一个小子集,以及一些不同的定义和构建标志。

当我尝试这样的事情时:

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。

我不确定为什么它似乎适用于文件,但不适用于标志。

最佳答案

首先,您必须为可执行文件使用不同的名称
如果要向目标添加特定定义,可以使用 set_target_properties,因此每个目标都有自己的属性(例如,编译定义)。

# compile and link first app
add_executable(prg1 ${CommonSources} ${Prg1SpecificSources})
target_link_libraries(prg1 lib1 lib2 lib3)

#set target-specific options
set_target_properties(prg1 PROPERTIES COMPILE_DEFINITIONS "FOO=BAR1")

#...

# compile and link second app
add_executable(prg2 ${CommonSources} ${Prg2SpecificSources})
target_link_libraries(prg2 lib1 lib2 lib3)
#set target-specific options
set_target_properties(prg1 PROPERTIES COMPILE_DEFINITIONS "FOO=BAR2")

如果你想覆盖链接标志,你可以使用 set_target_properties LINK_FLAGS

关于visual-studio-2010 - 一个 CMakeLists.txt 中的多个 CMake 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12188004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com