CMake变量
CMAKE_CURRENT_SOURCE_DIR
- 指的是当前处理的
CMakeLists.txt
所在的路径。
CMAKE_CURRRENT_BINARY_DIR
- 如果是
in-source
编译,它跟CMAKE_CURRENT_SOURCE_DIR
一致,如果是out-ofsource
编译,他指的是target
编译目录。
CMAKE_CURRENT_LIST_FILE
- 输出调用这个变量的
CMakeLists.txt
的完整路径
文件目录
Solider目录的CMakeLists.txt
aux_source_directory(. SRC_LIST)
// 将此目录的源文件集合称为变量SRC_LIST
message(${SRC_LIST})
include_directories(${PROJECT_SOURCE_DIR}/include)
// 头文件目录
add_library(Solider_shared SHARED ${SRC_LIST})
// 库的名称,类型,源文件(动态库)
add_library(Solider_static STATIC ${SRC_LIST})
// 静态库
set_target_properties(Solider_shared PROPERTIES OUTPUT_NAME "Solider")
// 库的名称,库的输出名称(动态库)
set_target_properties(Solider_static PROPERTIES OUTPUT_NAME "Solider")
// 静态库
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
// 库文件输出到工作空间的lib目录下
工作空间的CMakeLists.txt (生成库文件)
cmake_minimum_required(VERSION 3.0)
project(MAIN)
// message(${MAIN_BINARY_DIR})
// message(${PROJECT_BINARY_DIR})
// message(${CMAKE_BINARY_DIR})
// 如果是out-of-source编译,指的是工程编译发生的目录
// /home/kavin/algorithm/VSCode/test05/build
// message(${MAIN_SOURCE_DIR})
// message(${PROJECT_SOURCE_DIR})
// message(${CMAKE_SOURCE_DIR})
// 这三个变量指代的内容是一致的,是工程顶层目录
// /home/kavin/algorithm/VSCode/test05
// 为了生成库文件,完成之后面再把这句注释掉
// 会进入Solider目录执行里里面的工作空间的CMakeLists.txt
add_subdirectory(Solider)
工作空间的CMakeLists.txt (编译源文件)
cmake_minimum_required(VERSION 3.0)
project(MAIN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_BUILD_TYPE Debug) // 要启用F5调试一定要用这一条
// 头文件目录
include_directories(${CMAKE_SOURCE_DIR}/include)
// 库文件目录
link_directories(lib)
// 生成可执行文件
add_executable(main main.cpp)
// 链接库(静态库)
target_link_libraries(main libSolider.a)
// 如果是动态库要记得添加环境变量 LD_LIBRARY_PATH=lib/