1.对cmake的说明
1.cmake是通过解析CMakeLists.txt脚本来生成项目需要的编译文件的。它可以生成多种不同类型的编译文件如makeflie、ninja等;
2.CMakeLists.txt的编写依赖大量cmake提供的函数或者宏,如PROJECT、SET等,只要掌握了这些宏的含义,就可以读懂CMakeLists.txt,从而了解工程的结构。
2.cmake中常用的函数或宏
其实,称为函数或宏并不准确。我想表达的是这些都是cmake提供好的,可以直接在CMakeLists.txt中使用,他们看起来就像是C语言的宏或者函数。
2.1 set
用法:set(varialbe,value)
例如:set(MAKE_FILES, ./)
说明:设置一个全局的变量
2.2 include
用法:include(file or module)
例如:include(test.cmake)
说明:与c语言的include类似
2.3 include_directories
用法:include_directories(dir1 dir2 ……)
例如:include_directories(“../my/include” “../my/include2”)
说明:用于在现有头文件搜索路径后面增加搜索路径
2.4 target_link_libraries
用法:target_link_libraries( target lib1 lib2 ……)
例如:target_linke_libraries(test libmy.so)
说明:target参数一般是add_excutable中指定的程序名
2.5 PROJECT_SOURCE_DIR
说明:这是cmake预定义号的一个宏,表示工程的根目录,可以直接使用
2.6 link_directories
说明:增加动态链接库的搜索路径,需要注意的是必须使用绝对路径。(相对路径其实也有办法用,但需要更多的配置,麻烦)
2.7 find_package
说明:当无法定位库的具体位置时,可以使用此命令进行查询。利用命令:cmake –help-module-list 和 cmake –help-module 来获取帮助信息。
例如:find_package(GTK2)