图片来源:https://www.pixiv.net/artworks/85222177
极简CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(HelloWrold)
add_executable(hello main.cpp)
设置编译使用的C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
设置项目名称和版本
project(Tutorial VERSION 1.0)
编译时自动生成包含版本号宏定义的头文件
configure_file(TutorialConfig.h.in TutorialConfig.h)
#define Tutorial_VERSION_MAJOR @Tutorial_VERSION_MAJOR@
#define Tutorial_VERSION_MINOR @Tutorial_VERSION_MINOR@
#define Tutorial_VERSION_MAJOR 1
#define Tutorial_VERSION_MINOR 0
添加INCLUDE路径
target_include_directories(Tutorial PUBLIC
"${PROJECT_BINARY_DIR}" #添加编译目录
"${PROJECT_SOURCE_DIR}/MathFunctions" #添加源代码目录的MathFunctions目录
)
编译为静态库
add_library(MathFunctions mysqrt.cxx)
链接库
target_link_libraries(Tutorial PUBLIC MathFunctions)
target_link_libraries(Tutorial MathFunctions) # 连接libMathFunctions.so库,默认优先链接动态库
target_link_libraries(Tutorial libMathFunctions.a) # 显示指定链接静态库
target_link_libraries(Tutorial libMathFunctions.so) # 显示指定链接动态库
让使用MathFunctions库的地方自动添加使用MathFunctions库必要的include路径
add_library(MathFunctions mysqrt.cxx)
target_include_directories(MathFunctions INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
参考:
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。