本文主要是介绍CMake Overview,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Reference
- CMake Tutorial
CMakeList.txt
对于每个project,需要在目录里有一个CMakeList.txt文件。
Command
这个文件由一系列的命令组成,每个命令的形式为:
command(args...)
command是命令的名字,不区分大小写;args是命令的参数,而各个参数以空格分割。——如果参数中包括空格,则用双引号括起来。
按照这些命令在txt中出现的顺序执行。
变量
变量可以是字符串,也可以是字符串列表。
语法:
${VAR}
如果变量的值是多个参数,则用set命令。比如下面的命令就是把 a b c 赋值给Foo这个变量:
set(Foo a b c)
此时,command(${Foo}) 就等价于 command(a b c)。
如果要作为一个参数传递,则需要添加双引号。如:command(“${Foo}”) 就等价于 command(“a b c”)。
环境变量
CMake可以直接引用环境变量:$ENV{VAR}
Hello World
一个c文件,生成可执行文件
project(Hello)
add_executable(Hello Hello.c)
如果要有多个c文件生成可执行文件,则如下:
add_executable(Hello Hello.c File2.c File3.c File4.c)
注释
“#”开头的一样视为注释。
运行CMake
需要两个目录:
- 源代码目录:源代码,以及CMakeList.txt
- binary目录:放生成的目标文件、库文件,以及可执行文件。
通常情况下,CMake不会写任何文件到源代码目录中,而是生成在binary目录中。——当然,也可以把这两个目录设置为同一个目录,即为insource build。对应的就是out-of-source build。
in source build
直接cd到源代码目录,并运行:
cmake .
out-of-source build
在binary目录下面,执行cmake命令,比如:
cmake ../src
cmake
$ cmake --help
Usagecmake [options] <path-to-source>cmake [options] <path-to-existing-build>Specify a source directory to (re-)generate a build system for it in the
current working directory. Specify an existing build directory to
re-generate its build system.
静态库&可执行文件
project(sha1test)add_library(sha1 STATIC sha1/sha1.c)add_executable(sha1test main.cpp)target_link_libraries(sha1test sha1)
这篇关于CMake Overview的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!