cmake入门之一:编译、INSTALL及shell语句
- 1.创建相应文件
- 1.1 工程目录下CMakeLists.txt
- 1.2 src文件夹
- 1.2.1 src文件夹下main.c
- 1.2.2 src文件夹下CMakeLists.txt
- 1.3 runhello.sh
- 1.4 其他文件/文件夹
- 2.编译
- 3.查看结果
- 参考文献
在学习cmake-practice这本书中的demo时,发现有个别没跑通的地方,调了半天,在此记录。
以下示例对应于书中/backup/cmake/t2
。
1.创建相应文件
创建好的文件目录树显示如下:
1.1 工程目录下CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
Project(HELLO)
add_subdirectory(src bin)
INSTALL(FILES COPYRIGHT README DESTINATION share/doc/cmake/t2)
INSTALL(DIRECTORY doc/ DESTINATION share/doc/cmake/t2)
INSTALL(PROGRAMS runhello.sh DESTINATION bin)
INSTALL(PROGRAMS build/bin/hello/ DESTINATION bin)
其中:
add_subdirectory(src bin) 源文件目录为src 二进制文件目录为bin
除了书中列出来的几个INSTALL
命令,尚需增加下面这一条命令,才可以将目标文件也安装到目标文件夹下:
INSTALL(PROGRAMS build/bin/hello/ DESTINATION bin)
1.2 src文件夹
1.2.1 src文件夹下main.c
//main.c
#include<stdio.h>
int main()
{
printf("Hello World from t1 Main!\n");
return 0;
}
1.2.2 src文件夹下CMakeLists.txt
add_executable(hello main.c)
1.3 runhello.sh
./hello
注意这里要修改成目标文件相应的路径。
1.4 其他文件/文件夹
其他文件夹COPYRIGHT
,README
以及doc/hello.txt
均为注释文件,可根据自己需要编辑。
2.编译
mkdir build
cd build/
cmake -DCMAKE_INSTALL_PREFIX=/tmp/t2/usr ..
make
make install
若未通过-DCMAKE_INSTALL_PREFIX
指定路径,默认为:/usr/local
。
3.查看结果
进入CMAKE_INSTALL_PREFIX
自定义的安装路径,查看其目录树:
执行命令:
$cd /tmp/t2/usr/bin
$sh runhello.sh
#Hello World from t1 Main!
$ ./hello
#Hello World from t1 Main!
编译和安装目前已经完成了!
参考文献
[1] github.com/Akagi201/learning-cmake