gpt4 book ai didi

c++ - CMake add_library( OBJECT ) 有环境变量吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:54 26 4
gpt4 key购买 nike

CMake是2.8.8在编译时引入了OBJECT库类型:add_library(OBJECT)。这是一个有用的构造,能够将所有类编译为 .o 文件,但还没有将它们添加到库中。

但是,我不确定它最终附加到生成的 make 文件中的命令的标志是什么。基本上,在执行 add_library( SHARED ) 命令时,它会添加 CMAKE_SHARED_LIBRARY_CXX_FLAGS 指定的任何标志。我希望能够只为 OBJECT 库指定构建标志,而不必求助于更全局的标志,例如 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_CXX_FLAGS_RELEASE。如果存在或计划这样的标志,有人知道吗?

回顾:

# has CMAKE_SHARED_LIBRARY_CXX_FLAGS to set SHARED library build flags
add_library(<lib> SHARED <srcs>)

# Is any environment variable available to set OBJECT library build flags?
add_library(<lib> OBJECT <srcs>)

我期待像 CMAKE_OBJECT_LIBRARY_CXX_FLAGS 这样的环境变量来设置 OBJECT 构建标志。查看源代码(Modules/SystemInformation.in 和 Modules/CMakeCXXInformation.cmake),我没有发现任何看起来像是特定于 OBJECT 库的内容。

编辑:具体来说,我想将 -fPIC 添加到 OBJECT 库,而不是可执行文件,这就是为什么我不想在 CMAKE_CXX_FLAGS_* 中指定标志

最佳答案

使用 CMake 2.8.9 或更高版本时,请使用属性 POSITION_INDEPENDENT_CODE以独立于编译器的方式启用位置独立代码:

add_library(<lib> OBJECT <srcs>)
set_target_properties(<lib> PROPERTIES POSITION_INDEPENDENT_CODE ON)

对于旧版本的 CMake,您可以设置 COMPILE_FLAGS OBJECT_LIBRARY 目标的属性:

add_library(<lib> OBJECT <srcs>)
set_property(TARGET <lib> PROPERTY COMPILE_FLAGS "-fPIC")

关于c++ - CMake add_library(<lib> OBJECT <src>) 有环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11509730/

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