首页cmake › cmake学习(三)常用指令

cmake学习(三)常用指令

一、基本指令:
INCLUDE_DIRECTORIES(${includedir}) #-I。
LINK_DIRECTORIES(${libdir}) #-L
TARGET_LINK_LIBRARIES(helloworld ${linkflags}) #-l
ADD_DEFINITIONS(${cflags}) #-D

1、ADD_DEFINATIONS:向C/CPP添加宏定义,相当于gcc中的-D,参数之间用空格分割
2、ADD_DEPENDICIES(target_name, depend_name):定义target对其他target的依赖关系
3、AUX_SOURCE_DIRECTORY(dir VARIBLE):把目录下的所有源文件保存在变量中,基本用来创建源文件列表
4、ADD_EXECUTABLE:指定目录,生成执行文件
5、EXEC_PROGRAM:外部调用指令,可移执行任何外部命令,后面加参数,例子如下:
EXEC_PROGERAM(ls ARGS”*.c” OUTPUT_VARIBLE LS_OUTPUT RETURN_VALUE LS_RVALUE)
IF(not LS_RVALUE)
MESSAGE(STATUS “xxx”)
ENDIF(not LS_RVAULE)
PS.这里执行ls *.c指令,执行成功的话,返回0。
6、FILE指令:
FILE(WRITE file_name “content”)
FILE(APPEND file_name “content”)
FILE(READ file_name varible)
FILE(WRITE file_name “content”)
7、FIND_系列指令:
LIBRARY( name path):
FIND_LIBRARY(Xorg X11 /usr/lib64)
IF(not Xorg)
MESSAGE(STATUS “no Xorg”)
ENDIF(not Xorg)
FILE( name path)
PATH( name path)
PROGRAM( name path)
PACKAGE( [major.minor][QUIET][NO MODULE][[REQUIRED][COMPONTS][componts….]])
最后一条,用来调用放在CMAKE_MODULE_PATH下的Find.cmake模块,也可以自定义Find模块
首先通过SET(CMAKE_MODULE_PATH /home/…)来指定位置

8、控制指令:
IF(expression),ELSE(expression),ENDIF(expression)
express举例:
否定:空,0,N,NO,OFF,FALSE,NOTFOUND或_NOTFOUND
肯定:COMMAND cmd,EXISTS dir/file,variable MARCHES regex等等等等还有很多~~~随用随查吧

发表评论