CMake 是一个非常强大的跨平台自动化构建工具,广泛应用于软件开发领域,尤其是在需要管理复杂项目结构、多平台编译和多种编译器支持的环境中。以下是一些CMake的实际应用场景和相应的用法示例,通过这些内容,你可以逐步掌握CMake的基本到高级用法。
cmake的工程应用的场景及用法示例
场景一:基本的可执行文件和库的构建
应用描述
创建一个项目,其中包含一个可执行文件和一个静态库。库包含一些功能,可执行文件使用这些功能。
CMake用法
1、定义项目和最低CMake版本
cmake_minimum_required(VERSION 3.10)
project(MyProject VERSION 1.0 DESCRIPTION "A simple CMake project" LANGUAGES CXX)
2、添加静态库
add_library(mylibrary STATIC src/mylibrary.cpp)
target_include_directories(mylibrary PUBLIC include)
3、添加可执行文件并链接库
add_executable(myapp src/main.cpp)
target_link_libraries(myapp PRIVATE mylibrary)
4、设置目标属性(例如C++标准)
set_target_properties(myapp PROPERTIES CXX_STANDARD 17)
场景二:使用外部库
应用描述
在项目中使用外部库,例如Boost,以利用其文件系统功能。
CMake用法
1、寻找外部依赖
find_package(Boost 1.65 REQUIRED COMPONENTS filesystem)
2、添加可执行文件并链接Boost库
add_executable(myapp src/main.cpp)
target_link_libraries(myapp PRIVATE Boost::filesystem)
场景三:安装和测试
应用描述
构建完成后,需要安装可执行文件和库,并设置基本的测试。
CMake用法
1、安装规则
install(TARGETS myapp mylibrary
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
2、启用和添加测试
enable_testing()
add_test(NAME MyAppTest COMMAND myapp)
场景四:生成和配置文件
应用描述
根据配置生成头文件,例如配置版本号、平台信息等。
CMake用法
1、配置文件
configure_file(config.h.in config.h)
2、在源代码中包括配置生成的文件
target_include_directories(myapp PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
场景五:跨平台编译
应用描述
确保CMake项目可以在Windows、Linux和macOS上编译。
CMake用法
1、平台检测和条件编译
if(WIN32)
target_compile_definitions(myapp PRIVATE PLATFORM_WINDOWS=1)
elseif(UNIX)
target_compile_definitions(myapp PRIVATE PLATFORM_UNIX=1)
elseif(APPLE)
target_compile_definitions(myapp PRIVATE PLATFORM_APPLE=1)
endif()
2、特定平台的编译选项
if(MSVC)
target_compile_options(myapp PRIVATE /W4)
else()
target_compile_options(myapp PRIVATE -Wall -Wextra -pedantic)
endif()
这些场景涵盖了CMake在实际开发中的常见用途。要掌握CMake,建议从简单的项目开始,逐步理解和应用更复杂的功能。同时,深入阅读官方文档和参考开源项目中的CMakeLists文件,可以帮助你更快地掌握CMake。