CMake常用命令

CMake常用命令

在这里插入图片描述
project(projectname): 指定工程名称
set(var [value]): 定义变量
message [SEND_ERROR | STATUS | FATAL_ERROR] “message to display”): 向终端输出信息

# 输出build type信息
message(STATUS "BUILD TYPE:" ${CMAKE_BUILD_TYPE})

CMake中指定生成文件的输出路径

# 设置二进制可执行文件输出路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
# 设置库文件输出路径
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)

CMake中指定源码文件路径
aux_source_directory(dir VAR): 添加源文件路径dir,并指定变量名VAR

# 定义源码目录列表变量
set(SRC_LIST "base" "net" "http")
# 遍历源码目录列表
foreach(SUB_DIR ${SRC_LIST})
	# 将源码目录设置为头文件目录
	include_directories(${PROJECT_SOURCE_DIR}/src/${SUB_DIR}
	# 将所有的源文件路径存入SUB_LIST
	aux_source_directory(/src/${SUB_DIR} SUB_LIST)
endforeach()

CMake中生成动态库和静态库
add_library(target [shared | static] SRC_LIST): 生成静态库文件或共享库文件
target_link_libraries(target libother): 链接需要的库文件
set_target_properties(target PROPERTIES [OUTPUT_NAME | VERSION ...] value): 设置target属性值

# 生成Demo_shared动态库文件
add_library(${CMAKE_PROJECT_NAME}_shared SHARED ${SUB_LIST})
# 链接需要用到的库文件pthread
target_link_libraries(${CMAKE_PROJECT_NAME}_shared pthread)
# 修改库文件名称为Demo,系统自动改为libDemo
set_target_properties(${CMAKE_PROJECT_NAME}_shared PROPERTIES 
	OUTPUT_NAME "${CMAKE_PROJECT_NAME}")

# 生成Demo_static静态库文件
add_library(${CMAKE_PROJECT_NAME}_static STAITC ${SUB_LIST})
# 链接需要用到的库文件pthread
target_link_libraries(${CMAKE_PROJECT_NAME}_static pthread)
# 修改库文件名称为Demo,系统自动改为libDemo
set_target_properties(${CMAKE_PROJECT_NAME}_static PROPERTIES 
	OUTPUT_NAME "${CMAKE_PROJECT_NAME}")

CMake中生成可执行文件

add_executable(app ${EXAMPLE_SRC_LIST})
target_link_libraries(app ${CMAKE_PROJECT_NAME}_shared)

CMake中安装文件
普通文件安装:

install (FILES README.md DESTINATION ~/doc)

脚本文件安装:

install (PROGRAMS build.sh DESTINATION bin)

目录文件安装:

install (DIRECTORY hello/ DESTINATION ~/doc)

二进制文件安装

install (TARGETS cpp RUNTIME DESTINATION bin)

库文件安装

set (INSTALL_PATH_LIB lib)
install (TARGETS ${CMAKE_PROJECT_NAME}_shared
	ARCHIVE DESTINATION ${INSTALL_PATH_LIB}
	LIBRARY DESTINATION ${INSTALL_PATH_LIB})
install (TARGETS ${CMAKE_PROJECT_NAME}_static
	ARCHIVE DESTINATION ${INSTALL_PATH_LIB}
	LIBRARY DESTINATION ${INSTALL_PATH_LIB})

猜你喜欢

转载自blog.csdn.net/u012086173/article/details/86482433
今日推荐