1. 准备工作
1)在D:\vs_test\cmake_test目录下,新建t2文件夹;
2)在t2下,新建目录src和文件CMakeLists.txt。src是用来存放源文件的。
3)在目录src下,新建CMakeLists.txt和main.cpp。
注意:在cmake工程中,任何子目录都需要建立一个 CMakeLists.txt
t2目录下的CMakeLists.txt文件内容:
PROJECT (HELLO)
ADD_SUBDIRECTORY(src bin)
src/CMakeList.txt 内容:
ADD_EXECUTABLE(Qt main.cpp)
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
src/main.cpp 内容:
#include <iostream>
int main()
{
std::cout << "Hello World from t2 Main!\n";
while (1);
}
2. 开始构建
具体的构建方法参考我上一篇文章:【Cmake】在Windows下用Cmake构建C++工程项目——cmake 的 helloworld——1
构建完成后,你会发现生成的目标文件 Qt.exe 位于 build/bin/Debug 目录中。
运行结果:
3. 语法解释
ADD_SUBDIRECTORY(src bin)
ADD_SUBDIRECTORY 指令,这个指令用于向当前工程添加存放源文件的子目录(src),并可以指定中间二进制和目标二进制存放的位置(bin)。
上面的例子定义了将 src 子目录加入工程,并指定编译输出(包含编译中间结果)路径为bin 目录。如果不进行 bin 目录的指定,那么编译结果(包括中间结果)都将存放在build/src 目录(这个目录跟原有的 src 目录对应),指定 bin 目录后,相当于在编译时将 src 重命名为 bin,所有的中间结果和目标二进制都将存放在 bin 目录。
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
将可执行二进制的输出路径为:build/bin
将库的输出路径设为:build/lib
这两条指令写在工程的 CMakeLists.txt 还是 src 目录下的CMakeLists.txt,把握一个简单的原则,在哪里 ADD_EXECUTABLE 或 ADD_LIBRARY,如果需要改变目标存放路径,就在哪里加入上述的定义。
在这个例子里,当然就是指 src 下的 CMakeLists.txt 了。