gpt4 book ai didi

c++ - CMake目标仅编译源文件

转载 作者:行者123 更新时间:2023-12-02 10:05:18 25 4
gpt4 key购买 nike

我正在使用C++ 17编写仅 header 的库。我想将其包含在“虚拟”源文件中:

#include "my/library.h"
// EOF

目的是确保库正确包含其所有依赖项。我还想在其上运行静态分析器,并在可行的情况下启用尽可能多的编译器检查来对其进行编译。

要创建普通的可执行目标,我需要添加 main()函数,否则链接阶段将失败。
我想我也可以创建一个静态库目标,该目标应该可以正常工作,尽管它会创建我不需要的 Artifact 。

还有其他选择吗?

最佳答案

CMake可以创建一个简单的Object库,该库仅是.o.obj文件:

The OBJECT library type defines a non-archival collection of object files resulting from compiling the given source files.



为此,请在 OBJECT 命令中使用 add_library()关键字:
add_library(MyObj OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/library.cpp)
target_include_directories(MyObj PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

您以后可以引用要编译到其他库或可执行文件中的目标文件:
add_library(MyLibrary STATIC 
$<TARGET_OBJECTS:MyObj>
MyOtherSource.cpp
HelpersFunctions.cpp
)

关于c++ - CMake目标仅编译源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60485628/

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