[编译环境][CMake]示例

编程入门 行业动态 更新时间:2024-10-24 10:14:28

[编译环境][CMake]<a href=https://www.elefans.com/category/jswz/34/1770116.html style=示例"/>

[编译环境][CMake]示例

CMakeLists.txt

# 所需CMake的最小版本。
cmake_minimum_required(VERSION 3.22)# 显示编译命令。
set(CMAKE_VERBOSE_MAKEFILE OFF)# 设置项目的名称,并将其存储在变量PROJECT_NAME中。
project(CMakeDemo)# 设置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)# 设置包含目录。
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} SHAREDMath.cpp
)

src/CMakeLists.txt

project(CMakeDemo)# 生成程序
add_executable(${PROJECT_NAME} main.cpp)
# 指定链接给定目标和/或其依赖项时要使用的库或标志。
target_link_libraries(${PROJECT_NAME} PRIVATEtoolPkgConfig::fmt
)

更多推荐

[编译环境][CMake]示例

本文发布于:2023-11-15 01:57:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1591691.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:示例   环境   CMake

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!