假设我们有一个如下工程需要进行构建:
.
├── CMakeLists.txt
└── main.cpp
0 directories, 3 files
CMakeLists.txt的内容如下:
Project(HELLO)
SET(SRC_LIST main.cpp)
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir " ${HELLO_SOURCE_DIR})
ADD_EXECUTABLE(hello ${SRC_LIST})
我们在CMakelists.txt所在的目录直接键入
cmake .
生成后文件夹内容如下:
.
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── CMakeLists.txt
├── main.cpp
└── Makefile
1 directory, 6 files
多了许多中间变量。
当然我们也可进入一个新的文件夹,如我们在原CMakeLists.txt所在目录建立一个build目录,并使用以下命令进行CMakeLists.txt“编译”:
cmake ..
生成后文件夹内容变成: . ├── build ├── CMakeLists.txt └── main.cpp
1 directory, 2 files
emm,看起来比较干净。删除起来前者比较麻烦,后者只需要删除build文件夹即可。
前者我们称为内部构建,也就是在CMakeLists.txt同一级目录进行编译,后者我们称为外部构建,与CMakeLists.txt不同级进行构建。
综上所述,外部构建CMake文件夹不会“污染”原文件夹目录,删除起来也比较简单,内部构建则相反,删除起来比较麻烦。
|