CMake杂记
阅读量: 101阅读人次: 102
使用FetchContent代码下载和构建
有时候一些比较小众的第三方库,因为其不稳定,还可能有bug,所以我们并不想在使用前就将其编译好生成库文件使用。而是想直接使用其代码构建,这样出现问题,也好直接查看代码,这时就可以使用FetchContent实现目的,例如:
include(FetchContent)
FetchContent_Declare(framelesshelper
GIT_REPOSITORY https://github.com/wangwenx190/framelesshelper
GIT_TAG main
)
set(FRAMELESSHELPER_BUILD_STATIC ON) # 设置 framelesshelper 的各种编译选项
FetchContent_MakeAvailable(framelesshelper)
使用ALIAS将库加入命名空间
有时候我们在编写可复用库时,难免会有将库再细分的想法,例如:
Kylin
├── Core
├── Gui
└── Network
参考Qt、及Boosts应用库的方式,一般都是Qt6::Widgets
、Qt6::Network
、Boost::log
。
add_library(KylinCore
# ......
BoostLog.h BoostLog.inl BoostLog.cpp
BufferUtility.h BufferUtility.cpp
)
add_library(Kylin::Core ALIAS KylinCore)
这时我们在使用时,就可以使用Kylin::Core
连接该库了:
target_link_libraries(Younger
PRIVATE Kylin::Core
# ......
)