在现代CMake中是否有每个目标的set()方法?

时间:2019-05-17 07:25:30

标签: cmake

我正在尝试实现与CMake中的set()函数相同的行为,但是使用了目标。假设我有一个主CMakeList和两个子文件夹,每个都有一个CMakeList。

Foo CMakeLists.txt :

cmake_minimum_required(VERSION 3.8)
add_subdirectory(Bar)
add_subdirectory(Tox)

add_library(foo STATIC main.cpp)
#command to set UseFeatureA=ON
target_link_libraries(foo PUBLIC bar )
target_link_libraries(foo PUBLIC tox)
Bar CMakeLists.txt:

add_library(bar PUBLIC bar.cpp)

if(UseFeatureA) #This has to be true
target_sources(bar PRIVATE coolFeatureA.cpp)
endif()
Tox CMakeLists.txt:

add_library(tox STATIC tox.cpp)

if(UseFeatureA) #This has to be FALSE
target_sources(bar PRIVATE coolFeatureA.cpp)
endif()

我在target_compile_definition()中尝试过Foo,但是我不知道如何在Bar中检索var。 我在做什么错了?

0 个答案:

没有答案