- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
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/
我想弄清楚 this 到底是什么行是在这个 github json 项目的 cmake 文件中, add_library(${NLOHMANN_JSON_TARGET_NAME} INTERFACE)
我正在尝试运行 cmake 来生成 makefile。在最小的工作示例中,我有三个文件和 1 个构建目录。 文件 1 是 CMakeLists.txt,其中包含: add_library (MathF
我正在设计一组可以在我的其他 C++ 项目中链接的库。为了使馆藏易于使用,我希望能够链接到各个图书馆,或者链接到一个包含所有其他图书馆的主图书馆。我如何在 CMakeLists.txt 文件中指定它?
我正在使用 CMake add_library 命令构建一个共享库,如下所示: add_library(mylibname OPTION SHARED SOURCES ${source_files}
我在 github 上编写/维护了一个小型单元测试库 https://github.com/acgreek/ExtremeCUnit使用 cmake 构建。您可以在 checkout 后通过“cmak
我正在使用 add_library 在 CMAKE 中导入静态库.lib 导入正常。但我也想验证这一点。所以我这样做: add_library(MYLIB STATIC IMPORTED) set_t
我有一个只有标题的库项目。在我的 CMakeLists.txt 我使用 INTERFACE 库类型 我想将此项目导入 CLion,但是当我打开任何头文件时,IDE 会提示 此文件不属于任何项目目标 那
库至少需要 cpp14,但如果 cpp17 可用,它会解锁更多功能。我尝试了以下。 cmake_minimum_required(VERSION 3.10) project(dummy) add_li
我正在尝试使用来自库 https://github.com/trusch/libbcrypt 的 crypt blowfish 项目的 c 包装器还有一个 cpp 包装器围绕两个文件 bcrypt.c
TLDR: 我想让 CMake 等待 ExternalProject_Add 完成,然后再尝试移动到下一个子目录并构建一个恰好使用一个的库外部项目的文件。换句话说,我喜欢将外部项目声明为共享库的依赖项
Windows 64bit使用cmake编译c++项目:github.com/iHateInventNames/synergy-through-usb 我在这篇文章中修复了之前的一个问题:Compil
我有一个使用 CMake 作为构建工具的项目,并为我和我的同事制作了一个简单的模板。当我在网上搜索最佳且易于使用的实践时,我遇到了创建库的不同方法。 在这个模板中,我在两个单独的变量中列出了头文件和源
我正在尝试从一组 .cs 文件构建 CSharp DLL。我使用 add_library() 函数添加源文件(.cs 文件)。但它发出警告,如“add_library for library libn
我将我的凭据 key 存储在一个 cpp 原生文件中并使用 CMake 构建然后将其链接到我的应用程序: 当前代码: 我的 src/main/cpp/credentials-provider-dev.
CMake是2.8.8在编译时引入了OBJECT库类型:add_library(OBJECT)。这是一个有用的构造,能够将所有类编译为 .o 文件,但还没有将它们添加到库中。 但是,我不确定它最终附加
使用语句的目的是什么: add_library( [SHARED|STATIC] IMPORTED) 根据我的发现,即使您在上面创建了一个导入的库目标,您仍然需要指定实际 .so 或 .a 的具体位置
我正在学习 CMake,但有点吃力。我的“项目”正在使用以一个 .cpp 文件和两个 .h 文件的形式提供的 JsonCpp“库”。结构如下所示: myProject build/ j
我正在尝试为所有具有特定结尾的文件调用 add_library。 目录结构是: src | - CMakeLists.txt (1) | - main.cpp | - gui | -
我们使用 CMake 和普通的 Unix 生成文件进行构建。有一些静态分析检查,例如Cppcheck ,我们在项目中的每个 C/C++ 文件中运行以在编译时捕获错误。 我为 cppcheck 创建了一
我想向我在 Windows 7 中使用 Visual Studio 2013 Update 2 的 cmake 项目添加一个仅 header 目录。我做了一些研究并提出了这个 Cmakelists.t
我是一名优秀的程序员,十分优秀!