1.文件组织结构
./test
|
+--- main.cc
|
+--- math/
|
+--- mathA
|
+--- FunctionsA.cc
|
+--- FunctionsA.h
+--- mathB
|
+--- FunctionsB.cc
|
+--- FunctionsB.h
+--- other/
|
+--- OtherFunctions.cc
|
+--- OtherFunctions.h
2.根目录中的CMakeList.txt
# CMake 最低版本号要求
cmake_minimum_required(VERSION 2.8)
# 打开Debug模式
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
# 添加预定义宏
ADD_DEFINITIONS(-D __APPLE__)
# 项目信息
project(test)
# 添加头文件目录
include_directories(${PROJECT_SOURCE_DIR}/math)
include_directories(${PROJECT_SOURCE_DIR}/other)
# 添加子目录
add_subdirectory(math)
add_subdirectory(other)
# 添加头库目录
link_directories(${PROJECT_SOURCE_DIR}/math)
link_directories(${PROJECT_SOURCE_DIR}/other)
# 指定生成目标
add_executable(${PROJECT_NAME} main.cc)
# 添加链接库
target_link_libraries(${PROJECT_NAME} math other)
3.math目录下的CMakeList.txt
# 分别将mathA目录下的所有源文件和mathB目录下的所以源文件
# 保存到 MATHA 变量和MATHB变量
aux_source_directory(./mathA DIR_MATHA)
aux_source_directory(./mathB DIR_MATHB)
LIST (APPEND FULL_SRC
${DIR_MATHA}
${DIR_MATHA}
)
# 添加头文件目录,也可写成./math
include_directories(${PROJECT_SOURCE_DIR}/math)
# 生成链接库
add_library(math ${FULL_SRC})
4.other目录下的CMakeList.txt
# 查找当前目录下的所有源文件
# 并将名称保存到 SRC_LIST 变量
aux_source_directory(./src SRC_LIST)
include_directories(./)
# 生成链接库
add_library(other ${SRC_LIST})
cmake使用示例与整理总结