美文网首页Linux
CMake教程读书笔记-第三步,安装与测试(1)

CMake教程读书笔记-第三步,安装与测试(1)

作者: QuietHeart | 来源:发表于2020-11-11 16:12 被阅读0次

第三步,安装与测试

下面,我们将为我们的项目添加安装规则,以及测试支持。

安装

相关代码:3_install

安装规则非常直观,只需对想要安装的文件,在项目以及子模块中的 CMakeLists.txt 中指定相应路径即可。

MathFunctions/CMakeLists.txt

MathFunctions 库,我们通过向 MathFunctionsCMakeLists.txt 文件(注,不是顶级 CMakeLists.txt)加入如下两行,实现对库和头文件的安装规则设置:

install (TARGETS MathFunctions DESTINATION bin)
install (FILES MathFunctions.h DESTINATION include)

CMakeLists.txt

对整个应用程序,加入如下行到顶级 CMakeLists.txt 文件,来实现对可执行文件以及配置头文件进行安装。

# add the install targets
install (TARGETS Tutorial DESTINATION bin)
install (FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h"        
         DESTINATION include)

这就是全部。这时候,你应当可以编译这个项目,然后运行 make install (或者从IDE编译INSTALL目标),然后相应的头文件、库、可执行文件将会被安装。

CMake 变量 CMAKE_INSTALL_PREFIX 用来确定文件被安装的根路径, /usr/local/ 是默认的安装路径。

实践

假设我们设置安装路径为 myprefix, 那么进行过程大致如下:

$mkdir myprefix
$ls -p
myprefix/  tree.cmakelog  tree.installlog  tree.origin  tutorial/
$tree . >tree.origin
$cat tree.origin 
.
├── myprefix
├── tree.cmakelog
├── tree.installlog
├── tree.origin
└── tutorial
    ├── CMakeLists.txt
    ├── MathFunctions
    │   ├── CMakeLists.txt
    │   ├── MathFunctions.h
    │   └── mysqrt.cpp
    ├── TutorialConfig.h.in
    └── tutorial.cpp

3 directories, 9 files

$cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/myprefix tutorial/
$tree . >tree.cmakelog

$make
Scanning dependencies of target MathFunctions
[ 50%] Building CXX object MathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.cpp.o
Linking CXX static library libMathFunctions.a
[ 50%] Built target MathFunctions
Scanning dependencies of target Tutorial
[100%] Building CXX object CMakeFiles/Tutorial.dir/tutorial.cpp.o
Linking CXX executable Tutorial
[100%] Built target Tutorial

$make install
[ 50%] Built target MathFunctions
[100%] Built target Tutorial
Install the project...
-- Install configuration: ""
-- Installing: /home/miracle/mydata/orgmode/data/f80366ab-6a10-4de9-9793-3a531afbc192/cmake/3_install/myprefix/bin/Tutorial
-- Installing: /home/miracle/mydata/orgmode/data/f80366ab-6a10-4de9-9793-3a531afbc192/cmake/3_install/myprefix/include/TutorialConfig.h
-- Installing: /home/miracle/mydata/orgmode/data/f80366ab-6a10-4de9-9793-3a531afbc192/cmake/3_install/myprefix/bin/libMathFunctions.a
-- Installing: /home/miracle/mydata/orgmode/data/f80366ab-6a10-4de9-9793-3a531afbc192/cmake/3_install/myprefix/include/MathFunctions.h

$tree myprefix >tree.install
$cat tree.install
myprefix/
├── bin
│   ├── libMathFunctions.a
│   └── Tutorial
└── include
    ├── MathFunctions.h
    └── TutorialConfig.h

2 directories, 4 files

安装文件在 install_manifest.txt 也有指出。另外除了命令行中用 -DCMAKE_INSTALL_PREFIX=<install_path> 指定前缀外,还可在 CMakeLists.txt 中使用 SET(CMAKE_INSTALL_PREFIX <install_path>) 来指定。

常用过程

代码:

$ tree
.
└── tutorial
    ├── CMakeLists.txt
    ├── MathFunctions
    │   ├── CMakeLists.txt
    │   ├── MathFunctions.h
    │   └── mysqrt.cpp
    ├── TutorialConfig.h.in
    └── tutorial.cpp

2 directories, 6 files

常用命令:

$mkdir build && cd build
$cmake -DCMAKE_INSTALL_PREFIX=$(pwd)/myprefix tutorial/
$make
$make install
$ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  install_manifest.txt  Makefile  MathFunctions  myprefix  Tutorial  TutorialConfig.h
$tree myprefix/
myprefix/
├── bin
│   ├── libMathFunctions.a
│   └── Tutorial
└── include
    ├── MathFunctions.h
    └── TutorialConfig.h

2 directories, 4 files

相关文章

网友评论

    本文标题:CMake教程读书笔记-第三步,安装与测试(1)

    本文链接:https://www.haomeiwen.com/subject/vbslbktx.html