Cmake add_compile_definitions但适用于所有目标[已关闭]

xvw2m8pv  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(77)

**已关闭。**此问题需要debugging details。目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
两年前关闭。
Improve this question
有没有一种方法可以在cmake中为所有创建的目标创建定义。

add_compile_definitions(MYDEFINITION)

字符串
在我的根目录CmakeLists.txt中,那么它似乎只为在该文件中创建的目标创建那些定义。但是我想为在子目录中创建的所有目标创建定义。最好的方法是什么?

webghufk

webghufk1#

我为所有目标设置属性的常用解决方案是简单地添加一个common目标,它具有我想添加到所有目标的接口属性。

add_library(common INTERFACE)

target_compile_definitions(common INTERFACE MYDEFINITION)

字符串
最妙的是,你还可以把其他东西,如警告设置:

target_compile_options(common INTERFACE
    $<$<CXX_COMPILER_ID:MSVC>:/Wall>
    $<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
)


在common target中设置好common things后,您可以在需要的地方使用它:

add_library(mylib ...)
add_executable(myexe ...)

target_link_libraries(mylib PRIVATE common)
target_link_libraries(myexe PRIVATE common)

相关问题