Cmake是一个先进的现代化构建工具,其可以通过编写CMakeLists.txt文件,产生不同平台,支持不同编译器的构建文件,简化了不同平台的项目的编译和构建过程。
实际上,不少开源软件均采用Cmake进行构建。本文首先介绍在用命令行的方式编译和运行C++和Fortran程序,然后用最基本的例子表明如何采用Cmake进行构建。
在Windows系统下,在安装编译器时,通常会把编译器的安装路径写到系统环境变量里,这样我们可以直接在命令行里用编译器的exe名称启动程序。
例如,在本机上安装了Vs和oneAPI2025,其中vs包含了对于C和C++的编译器cl.exe,打开oneApi安装目录下的命令提示符窗口,输入”cl”即可运行cl.exe,oneAPI包含了C++编译器icl.exe和Fortran编译器ifort.exe,因此输入相应的目录即可运行相应的编译器。
这样,只要我们有了源代码,就可以直接在命令行里运行,不需要打开vs创建项目:
编译器自带就把代码编译成了exe,接下来直接输入text1.exe即可运行。
上面这种命令行的方式很简单,对于单个程序时也很方便,如果有多个程序,将多个程序直接写在后面即可,如“cl test1.cpp a1.cpp a2.cpp”
当程序中调用了外部库时,我们当然依然可以采用命令行的方式来编译。但是,配置include路径,设置库文件的目录例如.lib等就很麻烦,而通过Cmake,编写一次CmakeLists文件,我们后续就可以不用重复设置,避免重复工作。
在Windows下,安装好cmake后,我们可以通过打开cmake-gui用界面来进行cmake构建操作,也可以用命令行的方式进行构建。
以下是一个例子:
编写好源程序文件和CMakeLists.txt:
// cmake-test1.cpp
int main(int argc, char const *argv[])
{
std::cout<<"this is cmake-test1\n";
return 0;
}
CMakeLists.txt中的内容:
cmake_minimum_required (VERSION 3.31.5)
project (cpp1)
add_executable(test1 cmake-test1.cpp)
在cmakeLists.txt共有3行内容,第一行是表明编译时cmake的最小版本,第二行创建了一个叫cpp1的项目,第3行是把cmake-test1.cpp文件加入到项目里,生成一个test1.exe的可执行文件。
运行cmake-gui.exe,设置下cpp文件所在路径和希望生成的文件的路径,在先后点击Configure和Generate,就会在build目录下生成相应的解决方案文件。
用vs打开cpp1.sln,把test1项目设为启动项目,即可运行。
以上,即是对于C++采用cmake进行构建的过程。看起来似乎流程并不简要,但是实际上对于大型工程,能够简化不少。
对于Fortran构建,一般还需要在CMakeLists中添加对Fortran的支持:
cmake_minimum_required (VERSION 3.31.5)
project (fortran1)
enable_language(Fortran)
add_executable(cmake1 fortran-cmake1.f90)
上面是用Cmake构建C++和Fortran项目中的最基础例子,当然实际中CMAKE还有更多的知识需要学习,例如如何添加头文件路径,添加依赖库,指定各种编译选项,指定编译器等。在下一篇推文中,我们将介绍如何用Cmake工具完成大型稀疏矩阵特征值求解开源库Arpack的编译安装。
以上,即是本文的全部内容,感谢您的阅读