cmake不设置汇编定义

发布于 2025-02-03 03:10:50 字数 623 浏览 2 评论 0原文

我正在研究一个使用cmake构建的项目。我有我的cmake这样的文件:

dirA/CMakeLists.txt :

add_library(A STATIC ${SRC_FILES})
target_compile_definitions(A public -DABC)

dirB/CMakeLists.txt :

add_library(B STATIC ${SRC_FILES})
target_link_libraries(B PRIVATE A)        //-DABC is passed to B

dirC/CMakeLists.txt :

add_library(C STATIC ${SRC_FILES})
target_link_libraries(C B)                ////-DABC is not passed to C

我观察到flag -dabc正在传递给库b,但没有库c c c b /代码>。有没有办法在cmake中传递编译定义?

I am working on a project that use cmake build. I have my cmake files like this:

dirA/CMakeLists.txt :

add_library(A STATIC ${SRC_FILES})
target_compile_definitions(A public -DABC)

dirB/CMakeLists.txt :

add_library(B STATIC ${SRC_FILES})
target_link_libraries(B PRIVATE A)        //-DABC is passed to B

dirC/CMakeLists.txt :

add_library(C STATIC ${SRC_FILES})
target_link_libraries(C B)                ////-DABC is not passed to C

I observe that flag -DABC is being passed to library B but not to library C. Is there a way to pass the compile definitions in cmake transitively?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寻找一个思念的角度 2025-02-10 03:10:50

当然。公开链接到B。

target_link_libraries(B PUBLIC A)

私人链接明确停止了属性的传播。

Sure. Link A to B publicly.

target_link_libraries(B PUBLIC A)

Private linkage explicitly halts transitive propagation of properties.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文