单个C++程序可以用g++编译,指令较短;但当有大型项目存在多个C++程序时,使用g++编译就极其不方便啦,那么我们能不能通过一个简单指令就能编译所有C++程序呢?当然有啦,cmake就是其中一种啦!
接下来,我们在vs code简单用cmake来编译一个简单C++程序,过程如下:
- 创建一个demo文件夹,在里面再创建一个main.cpp文件,敲入下面代码:
#include <iostream>
using namespace std;
int main(){
cout<<”Hello World”<<endl;
return 0;
}
- 使用cmake之前,我们需要创建一个CMakeLists.txt文件,通过这个文件我们可以按照我们自己需求来完成编译。在这之前先说一下通常一个CMakeList.txt包括下面部分:
cmake_minimum_required(VERSION 3.0)
project(xxx) #用于指定cmake工程的名称,即cpp文件;
aux_source_directory(路径变量) # 获取路径下所有的.cpp/.c/.cc文件(不包括子目录),并赋值给变量
set(变量 文件名/路径/...) # 给文件名/路径名或其他字符串起别名,用${变量}获取变量内容
add_subdirectory(子文件夹名称) # 编译子文件夹的CMakeLists.txt
add_library(库名称) # 将.cpp/.c/.cc文件生成.a静态库
add_executable(可执行文件名称) # 将.cpp/.c/.cc文件生成可执行文件
include_directories(路径) # 规定.h头文件路径
link_directories(路径) # 规定.so/.a库文件路径
target_link_libraries(库名称/可执行文件链接的库名称) # 对add_library或add_executable生成的文件进行链接操作
根据上述部分,构建main.cpp的CMAKEList.txt文件如下:
cmake_minimum_requried(VERSION 3.0)
project(main)
add_executable(main main.cpp)
- 接下来依次敲入下列命令即可:
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
make
./main.exe
执行结果如下:
下面是附带程序截图和文件列表: