有没有办法在 cmake 中为创建的所有目标创建定义。到目前为止当我
add_compile_definitions(MYDEFINITION)
Run Code Online (Sandbox Code Playgroud)
在我的根 CmakeLists.txt 中,它似乎只为该文件中创建的目标创建这些定义。但我想为子目录中创建的所有目标创建定义。做这个的最好方式是什么?
我为所有目标设置属性的常用解决方案只是添加一个common目标,该目标具有我想要添加到所有目标的接口属性。
add_library(common INTERFACE)
target_compile_definitions(common INTERFACE MYDEFINITION)
Run Code Online (Sandbox Code Playgroud)
巧妙的是您还可以添加其他内容,例如警告设置:
target_compile_options(common INTERFACE
$<$<CXX_COMPILER_ID:MSVC>:/Wall>
$<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
)
Run Code Online (Sandbox Code Playgroud)
在公共目标中设置好公共的东西后,就可以在需要的时候使用它:
add_library(mylib ...)
add_executable(myexe ...)
target_link_libraries(mylib PRIVATE common)
target_link_libraries(myexe PRIVATE common)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3282 次 |
| 最近记录: |