格式:
set_target_properties(target1 target2 ...
PROPERTIES
属性名称1 值
属性名称2 值
...
)
两条指令的作用都是讲将include的目录添加到目标区别在于include_directories
是CMake编译所有目标的目录进行添加,target_include_directories是将
CMake编译的指定的特定目标的包含目录进行添加
添加需要链接的库文件路径
命令1:target_link_libraries(<target> [item1 [item2 [...]]]
[[debug|optimized|general] <item>] ...)
作用:为给定的目标设置链接时使用的库(设置要链接的库文件的名称)
eg:target_link_libraries(MyProject a b.a ) //将若干库文件链接到
hello中,target_link_libraries里的库文件的顺序符合gcc/g++链接顺序规
则,即:被依赖的库放在依赖他的库的后面,如果顺序有错,链接将会报错
关键字:debug对应于调试配置
关键字:optimized对应于所有其他的配置类型
关键字:general对应于所有的配置(该属性是默认值)
命令2:link_libraries
作用:给当前工程链接需要的库文件(全路径)
eg:link_libraries(("/opt/MATLAB/R2012a/bin/glnxa64/ ")//必须
添加带名字的全路径
区别:link_libraries和target_link_libraries命令的区别:target_link_libraries可
以给工程或者库文件设置其需要链接的库文件,而且不需要填写全路径,但是
link_libraries只能给工程添加依赖的库,而且必须添加全路径
添加需要链接的库文件目录
命令:link_directories(添加需要链接的库文件目录)
语法:link_directories(directory1 directory2 ...)
例子:link_directories("/opt/MATLAB/R2012a/bin/glnxa64")
指令的区别:指令的前缀带target,表示针对某一个目标进行设置,必须指明设
置的目标;include_directories是在编译时用,指明.h文件的路径;
link_directoeies是在链接时用的,指明链接库的路径;target_link_libraries是指
明链接库的名字,也就是具体谁链接到哪个库。link_libraries不常用,因为必须
指明带文件名全路径
控制目标属性
以上的几条命令的区分都是:是否带target前缀,在CMake里面,一个target有
自己的属性集,如果我们没有显示的设置这些target的属性的话,CMake默认是
由相关的全局属性来填充target的属性,我们如果需要单独的设置target的属性,
需要使用命令:set_target_properties()
命令格式
控制编译选项的属性是:COMPILE_FLAGS
控制链接选项的属性是:LINK_FLAGS
控制输出路径的属性:EXECUTABLE_OUTPUT_PATH(exe的输出路径)、
LIBRARY_OUTPUT_PATH(库文件的输出路径)
举例: