cmake 2.8语法
CMake 2.8 是一个相对较旧的版本,发布于 2010 年。虽然 CMake 2.8 仍然有一些用户,但 CMake 3.0 及更高版本提供了许多改进和新功能。
以下是 CMake 2.8 的基本语法和常用命令:
1.设置目标属性
cmake
add_library(target_name [SHARED|STATIC|MODULE] source1 source2 ... sourceN) | |
add_executable(target_name [WIN32|MACOSX_BUNDLE] source1 source2 ... sourceN) | |
2.添加头文件目录和库目录
cmake
include_directories(directory1 directory2 ... ) | |
link_directories(directory1 directory2 ... ) | |
3.添加链接库
cmake
target_link_libraries(target_name library1 library2 ... ) | |
4.设置编译标志
cmake
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} flags" ) # For C flags | |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} flags" ) # For C++ flags | |
5.添加测试
使用 add_test() 命令添加测试。例如:
使用 add_test() 命令添加测试。例如:
cmake
add_test(NAME testName COMMAND testExecutable) | |
6.安装程序
使用 install() 命令来安装程序或库。例如:
使用 install() 命令来安装程序或库。例如:
cmake
install(TARGETS target_name [RUNTIME|LIBRARY|HEADER] DESTINATION destination) | |
7.条件编译
使用 if(), elseif(), else() 和 endif() 语句来进行条件编译。例如:
使用 if(), elseif(), else() 和 endif() 语句来进行条件编译。例如:
cmake
if(condition) | |
# Do something if the condition is true | |
else(condition) | |
# Do something else if the condition is false | |
endif(condition) | |
为什么现在都用cmake |
8.变量替换
使用 $ 或 ${} 来引用变量。例如: ${VARIABLE_NAME}。
使用 $ 或 ${} 来引用变量。例如: ${VARIABLE_NAME}。
9.文件和目录操作
使用 file() 命令进行文件和目录操作,如 touch(), remove(), rename(), copy() 等。例如:
使用 file() 命令进行文件和目录操作,如 touch(), remove(), rename(), copy() 等。例如:
cmake
file(TOUCH filename) # Create a timestamp file or update its timestamp. | |
file(REMOVE file1 file2 ...) # Remove one or more files. | |
10.获取变量值
使用 get_property() 和 get_target() 来获取变量的值。例如:
使用 get_property() 和 get_target() 来获取变量的值。例如:
使用 get_property(VARNAME PROPERTY) 来获取一个属性。例如:get_property(srcs DIRECTORY PROPERTY SOURCES)。
使用 get_target(NAME [ALL] [PROPERTIES [PROPERTY]]) 来获取目标的信息。例如:get_target(myTarget ALL PROPERTIES COMPILE_FLAGS)。
11.自定义命令和函数
可以使用 function() 和 macro() 命令定义自己的命令或函数。例如:
可以使用 function() 和 macro() 命令定义自己的命令或函数。例如:
使用 function(NAME [GLOBAL]) 来定义一个函数。例如:function(printMessage)。
使用 macro(NAME [GLOBAL]) 来定义一个宏。例如:macro(printMessage)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论