[编译环境][CMake]示例

CMakeLists.txt

# 所需CMake的最小版本。
cmake_minimum_required(VERSION 3.22)

# 设置项目的名称,并将其存储在变量PROJECT_NAME中。
project(CMakeDemo)

# 显示编译命令。
set(CMAKE_VERBOSE_MAKEFILE OFF)

# 设置C编译器遵循的标准。
set(CMAKE_C_STANDARD 17)
# 设置是否打开GNU C扩展。
set(CMAKE_C_EXTENSIONS ON)
# 设置C++编译器遵循的标准。
set(CMAKE_CXX_STANDARD 23)
# 设置是否打开GNU C++扩展。
set(CMAKE_CXX_EXTENSIONS ON)

# 添加编译选项
add_compile_options(-Wall)

# 设置包含目录。
include_directories(include)
# 设置程序的输出路径。
#	PROJECT_SOURCE_DIR -- CMake内置变量之一,它代表当前项目根目录的路径。
#		当使用project命令指定项目名称时,CMake会自动设置PROJECT_SOURCE_DIR的默认值为项目根目录的路径(CMakeLists.txt所在的路径)。
#		如果你使用的是子目录CMakeLists.txt,那么PROJECT_SOURCE_DIR将会是子目录的路径。
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
# 设置库的输出路径。
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

# 搜索第三方工具pkg-config。
#	REQUIRED -- 如果找不到,则报错并停止生成。
find_package(PkgConfig REQUIRED)
# 通过pkg-config搜索fmt库。
#	REQUIRED -- 如果找不到,则报错并停止生成。
#	IMPORTED_TARGET -- 创建一个名为'PkgConfig::fmt'的导入目标,该目标可以作为参数直接传递给target_link_libraries()。
pkg_search_module(fmt REQUIRED IMPORTED_TARGET fmt)

# 添加子目录
add_subdirectory(lib)
add_subdirectory(src)

lib/CMakeLists.txt

project(tool)

# 生成库
# 库的类型可以为
#	STATIC -- 静态库
#	SHARED -- 动态库
#	MODULE -- 模块库
add_library(${PROJECT_NAME} SHARED
	Math.cpp
)

src/CMakeLists.txt

project(CMakeDemo)

# 生成程序
add_executable(${PROJECT_NAME} main.cpp)
# 指定链接给定目标和/或其依赖项时要使用的库或标志。
target_link_libraries(${PROJECT_NAME} PRIVATE
	tool
	PkgConfig::fmt
)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值