cmake拓展应用
使用CMake产生不同形式的编译文件
默认情况下是产生Makefile文件,但是你可以选择系统支持的编译文件。 首先在终端输入
| |
在输出信息的最下面会有当前支持的编译文件格式:
| |
这里前面有*的就是默认的文件格式,我这里是Unix的Makefile。
如果想要改变输出的编译文件,需要加上-G选项:
| |
cmake编译工程的其他方式
我们最熟悉的就是两种方式:在工程目录下使用cmake .和创建一个build目录,进入之后使用cmake ..。
其实你也可以在含有CMakeCache.txt文件的文件夹下执行cmake .来编译。比如在build文件夹下。CMakeCache.txt文件本身就是存储着cmake编译信息,减少重复编译时间的文件。
或者你可以使用cmake [-S source_file_path] [-B build_path]来编译。其中-S指令指定了CMakeLists.txt文件所在位置(一般是不写-S指令的,直接写出路径就可以了),-B指定要将编译结果放在哪个文件。这样你以后就可以写
| |
而不需要写三条语句了。
cmake生成工程时的有趣选项
--graphviz
--graphviz=<filename>选项很有意思,他会给你生成一个用graphviz软件(dot语法)描述的文件,文件名称是filename。这个文件描述的图片描述了你生成的可执行文件。
--system-information
--system-information=<filename>会生成系统信息。系统信息里面包含了这个系统中链接库的后缀,可执行文件的后缀等。
编译二进制文件
一般我们都是先cmake ..,然后cmake生成了Makefile,再使用make编译。
然后又有多少人知道,直接make只是编译所有的目标,你还可以在后面指定目标名称来进行单独编译呢?
目标的名称就是你CMakeLists.txt中语句add_excutable()的第一个参数。
还有一个冷知识:但是cmake自己也可以编译,使用的是cmake --build命令。只不过没人用就是了。
安装
一般都是使用sudo make install安装的。但是这里有一个很烦人的问题:如果我在cmake ..的时候指定错了安装目录,那我还得先清理build文件夹,然后再重新cmake ..。这个时候这个cmake --install指令就有用了。
cmake --install本身也可以安装文件(比如cmake --install .),但是更好的用途是使用--prefix选项再次定义CMAKE_INSTALL_PREFIX变量来改变安装路径:
| |