速查命令
cmake -D xx=xx [路径] 外部添加变量
project(xxx) #关联变量 PROJECT_SOURCE_DIR PROJECT_NAME
cmake_minimum_required(VERSION 3.5) #指定cmake 版本
SET(CMAKE_INSTALL_PREFIX <install_path>) #指定install安装路径
aux_source_directory(./ SRC) #获取当前目录下所有.c .cpp .cc
set(CXX "-CXX -Wall -pthread")
set(CMAKE_CXX_FLAGS ${CXX}) #C/C++相关编译参数
set(变量名 路径) 设置变量
add_definitions(-Dhaha) #添加编译选项 比如宏定义haha
message("sssss") #打印消息
add_subdirectory(子文件夹) #编译子文件,子文件夹中需要有CMakeLists.txt
add_library(utils SHARED/STATIC ${SRC}) #将变量SRC代表的代码编译成动态/静态 库 比如这个生成的就是 libutils.so / libutils.a lib可以去掉不写
add_executable(utils ${SRC}) #将变量SRC代表的文件编译成二进制文件
target_include_directories(要生成的:库文件名字/二进制名字
PRIVATE/PUBLIC ../src
) #包含源代码
target_link_libraries(要生成的:库文件名字/二进制名字 链接的库文件名字)
target_link_libraries(main utils) #将utils库,动态链接到main程序
栗子:
编译二进制
cmake_minimum_required(VERSION 3.5)
project(main)
LIST(APPEND CMAKE_CXX_FLAGS "-std=c++11 -O3 -ffast-math -Wall")
aux_source_directory(. SRC)
add_definitions(-DRUNTIME) #添加宏定义RUNTIME
add_executable(main ${SRC})
target_link_libraries(main pthread) #链接多线程库
编译动态库
cmake_minimum_required(VERSION 3.10)
aux_source_directory(. MANAGER_SRC)
add_library(MANAGER SHARED ${MANAGER_SRC})
target_link_libraries(MANAGER
PRIVATE ../utils)
target_link_libraries(MANAGER pthread) #链接多线程库