阶段 2.3:CMake 高级(条件编译 + 安装 + 跨平台)

学习目标

  1. 掌握条件编译:if/else
  2. 学会安装指令:install
  3. 处理跨平台差异(Linux/Windows)

核心知识点

  1. 条件编译if(CMAKE_BUILD_TYPE STREQUAL "Debug")(判断构建类型)
  2. 安装指令:install(TARGETS main DESTINATION bin):安装可执行文件到/usr/local/bininstall(TARGETS calc DESTINATION lib):安装库到/usr/local/libinstall(FILES calc.h DESTINATION include):安装头文件到/usr/local/include
  3. 跨平台判断if(WIN32)if(UNIX)if(APPLE)

实战练习

练习 4:Debug/Release 模式 + 安装功能

步骤 1:修改CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(Calc)

include_directories(./)

# 设置构建类型(默认Release)
if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif()

# Debug模式:添加-g -O0
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    add_compile_options(-g -O0)
else()
    add_compile_options(-O2)
endif()

add_library(calc add.c sub.c)
add_executable(main main.c)
target_link_libraries(main calc)

# 安装指令
install(TARGETS main DESTINATION bin)
install(TARGETS calc DESTINATION lib)
install(FILES calc.h DESTINATION include)

步骤 2:构建与安装

mkdir build && cd build
# 调试模式
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
# 安装(需要sudo权限,安装到/usr/local/{bin,lib,include})
sudo make install

练习 5:跨平台配置(Linux/Windows)

添加跨平台判断CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(Calc)

include_directories(./)

# 跨平台判断
if(WIN32)
    add_compile_definitions(WINDOWS)  # 定义宏WINDOWS
    message(STATUS "Building on Windows")
elseif(UNIX)
    add_compile_definitions(LINUX)   # 定义宏LINUX
    message(STATUS "Building on Linux")
elseif(APPLE)
    add_compile_definitions(MACOS)   # 定义宏MACOS
    message(STATUS "Building on macOS")
endif()

add_library(calc add.c sub.c)
add_executable(main main.c)
target_link_libraries(main calc)

验证:在 Linux 下执行cmake ..,会输出Building on Linux;在 Windows 下用 VS 打开,会输出Building on Windows

构建工具学习 文章被收录于专栏

make cmake

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务