目录
使用 aux_source_directory(./src SRC_LIST)
首先来看一下目前的目录结构:

- #ifndef ADD_H
- #define ADD_H
-
- int add(int numA, int numB);
-
- #endif
- #include "add.h"
-
- int add(int numA, int numB)
- {
- return numA + numB;
- }
- #include <iostream>
- #include "add.h"
-
- int main()
- {
- std::cout << "numA + numB = " << add(10,20) <<std::endl;
- return 0;
- }
- cmake_minimum_required(VERSION 2.8)
- project(test)
- include_directories(./include)
- set(SRC_LIST ./src/add.cpp ./src/main.cpp)
- add_executable(main ${SRC_LIST})
指定cmake的最小版本。
设置项目名称。
用来包含头文件目录。
用来定义变量,使用${}取出值。
进入build目录:
cd build/
执行cmake ..
cmake ..

执行make
make

执行main文件
./main
![]()
上述使用:
set(SRC_LIST ./src/add.cpp ./src/main.cpp)
用来指定源码位置,但是如果src文件夹下面有几千几百个源文件的话,难道要添加上百次???
适合源码文件比较少的情况下。
选择src文件夹下面的所有文件。
- cmake_minimum_required(VERSION 2.8)
- project(test)
- include_directories(./include)
- aux_source_directory(./src SRC_LIST)
- add_executable(main ${SRC_LIST})
然后执行:
- cd build
- cmake ..
- make
- ./main
结果展示:

目录结构:

修改CMakeLists.txt文件:
- cmake_minimum_required(VERSION 2.8)
- project(test)
- add_subdirectory(./src)
当cmake执行到第三行时,去src目录下找CMakeLists.txt文件。
- cmake_minimum_required(VERSION 2.8)
- project(test)
- aux_source_directory(./ SRCLIST)
- include_directories(../include)
- add_executable(main ${SRCLIST})
- set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)
EXECUTABLE_OUTPUT_PATH:目标二进制可执行文件存放的位置
PROJECT_SOURCE_DIR:代表的工程的路径
PROJECT_BINARY_DIR:代表编译的是编译的路径

执行如下操作:
- cd build
- cmake ..
- make
- cd ..
- cd bin
- ./main
