CMakeLists写法总结

个人最近学习了一些关于常见的CMakeLists的一些写法格式,分享给大家。

CMAKE_MINIMUM_REQUIRED(VERSION xxx) 该项表示要求CMAKE的最低版本号

PROJECT(aim1) 此项表示所建立的工程名称;

FIND_PACKAGE(xxx)该命令首先会在模块路径中寻找 Find<name>.cmake,这是查找库的一个典型方式。具体查找路径依次为CMake: 变量${CMAKE_MODULE_PATH}中的所有目录。如果没有,然后再查看它自己的模块目录 /share/cmake-x.y/Modules/ ($CMAKE_ROOT的具体值可以通过CMake中message命令输出信息); 如果没找到这样的文件,find_package()会在~/.cmake/packages//usr/local/share/中的各个包目录中查找,寻找<库名字的大写>Config.cmake 或者 <库名字的小写>-config.cmake (比如FIND_PACKAGE(Opencv REQUIRED),它会查找/usr/local/share/OpenCV中的OpenCVConfig.cmakeopencv-config.cmake)。个人认为这是CMake内置的快速查找方法

SET( SRC_DIR_PATH src ),SET命令是用来设置变量,换句话说就是给变量赋值,例如本条命令表示SRC_DIR_PATH=src,注意这里的src代表相对路径。SRC_DIR_PATH表示源文件目录路径。

FILE(GLOB_RECURSE SOURCE_FILES "src/*.cpp"),FILE文件命令具体包括许多,在这里使用GLOB_RECURSE 代表把该目录(src下)的所有源文件都赋予变量SOURCE_FILES。

INCLUDE_DIRECTORIES(xxx/include),INCLUDE就像源文件内的include一样,用来设置头文件。这里是用来设置头文件的搜索目录。告诉CMake,编译的时候去哪里找头文件。

LINK_DIRECTORIES(xxx/lib),LINK就是链接的意思,lib是库,该命令就是要链接库,设置动态链接库的目录,例如链接caffe,可以表示为LINK_DIRECTORIES(/home/usr/caffe/build/lib)。既然已经设置好了链接库的目录,那么具体需要链接哪些库,需要通过下面的操作完成。

SET( LIB_PROJECT caffe glog boost_system protobuf boost_thread gflags ),该命令是在设置链接库文件的名称。

随后,需要在ADD_EXECUTABLE()命令后写出TARGET_LINK_LIBRARIES(aim1 ${LIB_PROJECT}),要链接的动态库, 参数指明库的名字即可,比如libcaffe.so,这里是需要加上lib前缀和.so后缀的,或者以变量的形式表示。而上条设置名称时,不需要这些前后缀。

ADD_EXECUTABLE( TARGET ${PUBLIC_SRC_FILE} ${SRC_DIR_PATH}/detect_read_video_mixture.cpp ),生成可执行文件,需要将生成的名称和TARGET_LINK_LIBRARIES必须保持一致。

message( STATUS "hello world"),message命令就是向终端窗口发送消息,例如本条命令就是发送hello world。

猜你喜欢

转载自blog.csdn.net/weixin_41399111/article/details/81149070
今日推荐