CMake使用笔记

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使用示例与整理总结

你可能感兴趣的:(CMake使用笔记)