CMake Tutorial4_1 安装目标

本文介绍如何使用CMake的install命令来安装项目的目标文件至指定目录。通过实例演示了配置文件的使用,以及如何通过构建系统将库文件和头文件安装到特定的位置。

一 内容
  1. 请先阅读 CMake Tutorial3 增加库的使用要求

  2. 主要说明 如何使用install命令安装目标

  3. 文件目录

    step4_1
    |- MathFunctions
      |- CMakeLists.txt
      |- MathFunctions.h
      |- mysqrt.cc
    |- CMakeaLists.txt
    |- main.cc 
    |- TutorialConfig.h.in
    
  4. 修改MathFunctions/CMakeLists.txt

    add_library(MathFunctions mysqrt.cc)
    
    # state that anybody linking to MathFunctions needs to include the current source directory,
    # while MathFunctions itself doesn't
    # 即链接方不需处理包含MathFunctions源文件目录
    target_include_directories(MathFunctions
              INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}
              )
    
    # ---add 
    install(TARGETS MathFunctions DESTINATION lib)
    install(FILES MathFunctions.h DESTINATION include)
    
  5. 修改CMakeLists.txt

    # 设置CMake最低版本
    cmake_minimum_required(VERSION 3.16)
    
    # 设置项目名称及版本
    project(Tutorial VERSION 1.0)
    
    # 生成可执行文件
    add_executable(Tutorial main.cc)
    
    # 设置选项
    option(USE_MYMATH "use Turotial math" ON)
    
    # 配置文件:拷贝文件到另一位置,并且修改其内容
    configure_file(TutorialConfig.h.in TutorialConfig.h)
    
    if(USE_MYMATH)
      add_subdirectory(MathFunctions)
      list(APPEND extra_libs MathFunctions)
    endif()
    
    target_link_libraries(Tutorial PUBLIC ${extra_libs})
    
    # 打印信息
    message("PROJECT_BINARY_DIR=${PROJECT_BINARY_DIR}")
    
    # 增加include路径到目标,否则会无法include生成的TutorialConfig.h
    target_include_directories(Tutorial PUBLIC "${PROJECT_BINARY_DIR}")
    
    # ---add 
    install(TARGETS Tutorial DESTINATION bin)
    install(FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h" DESTINATION include)
    
二 构建及安装
lee@leedeMacBook-Pro cmake_tutorial % cd step4_1 
lee@leedeMacBook-Pro step4_1 % ls
CMakeLists.txt		TutorialConfig.h.in	main.cc
MathFunctions		build
lee@leedeMacBook-Pro step4_1 % cd build
lee@leedeMacBook-Pro build % cmake ..
-- The C compiler identification is AppleClang 12.0.0.12000032
-- The CXX compiler identification is AppleClang 12.0.0.12000032
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
PROJECT_BINARY_DIR=/Users/lee/research/cmake_learn/cmake_tutorial/step4_1/build
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/lee/research/cmake_learn/cmake_tutorial/step4_1/build
lee@leedeMacBook-Pro build % cmake --build .
[ 25%] Building CXX object MathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.cc.o
[ 50%] Linking CXX static library libMathFunctions.a
[ 50%] Built target MathFunctions
[ 75%] Building CXX object CMakeFiles/Tutorial.dir/main.cc.o
[100%] Linking CXX executable Tutorial
[100%] Built target Tutorial
lee@leedeMacBook-Pro build % cmake --install .
-- Install configuration: ""
-- Installing: /usr/local/lib/libMathFunctions.a
-- Installing: /usr/local/include/MathFunctions.h
-- Installing: /usr/local/bin/Tutorial
-- Installing: /usr/local/include/TutorialConfig.h
lee@leedeMacBook-Pro build % cmake --install . --prefix ../install
-- Install configuration: ""
-- Installing: /Users/lee/research/cmake_learn/cmake_tutorial/step4_1/build/../install/lib/libMathFunctions.a
-- Installing: /Users/lee/research/cmake_learn/cmake_tutorial/step4_1/build/../install/include/MathFunctions.h
-- Installing: /Users/lee/research/cmake_learn/cmake_tutorial/step4_1/build/../install/bin/Tutorial
-- Installing: /Users/lee/research/cmake_learn/cmake_tutorial/step4_1/build/../install/include/TutorialConfig.h
  • 如上,使用 cmake --install . 默认安装到了/usr/local 目录下

  • 也可以通过 --prefix 指定目录,例如 cmake --install . --prefix …/install

  • 此时文件目录

    step4_1
    |- MathFunctions
      |- CMakeLists.txt
      |- MathFunctions.h
      |- mysqrt.cc
    |- CMakeaLists.txt
    |- main.cc 
    |- TutorialConfig.h.in
    |- install
      |- include
        |- MathFunctions.h
        |- TutorialConfig.h
      |- lib
        |- libMathFunctions.a
      |- bin
        |- Tutorial
    
三 Github
四 参考
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值