Windows下使用cmake+MinGW编译c或cpp

    科技2022-09-04  119

    第一次在windows下使用cmake,踩了一些坑。

    首先去cmake官网上下载(我好像下的是Portable版,还要手动添加环境变量),装好之后在命令行上用cmake --version检查一下环境变量有没有问题;然后装一下MinGW(参考),装完后在MinGW的bin目录下找到mingw32-make.exe,最好复制一份改名为make.exe——其实不改也没关系,就是make的时候要用mingw32-make,命令长有点儿长。

    之后写一个测试文件,放在某个目录下面,例如我的是/samples/helloworld.cpp

    #include <iostream> int main() { std::cout << "Hello world" << std::endl; return 0; }

    在/samples/下新建一个build文件夹,在helloworld.cpp同级目录下新建CMakeLists.txt,内容如下:

    cmake_minimum_required(VERSION 3.0) SET(SOURCE helloworld.cpp) project(Hellowrold) add_executable(Hellowrold ${SOURCE})

    这里有个坑就是cmake在生成makefile时候会默认你使用系统默认编译器,在windows下也就是MSVC,最后生成一堆VS的.sln,当然也可以继续用msbuild编译,然而我想用MinGW,在CMakeLists.txt里面添加:

    SET(CMAKE_C_COMPILER "D:/Softwares/MinGW/bin/gcc.exe") SET(CMAKE_CXX_COMPILER "D:/Softwares/MinGW/bin/g++.exe")

    里面的"D:/Softwares/MinGW/bin/gcc.exe"和"D:/Softwares/MinGW/bin/g++.exe"换成你的gcc和g++路径就行了。

    最后切换到build目录下:

    如果是第一次cmake要用下面这个命令 cmake -G "Unix Makefiles" .. 不是第一次就用这个 cmake ..

    如果没有报错会发现生成了一个makefile,最后用make命令编译:

    make 如果文件多的话可以考虑用 make -j

    成功的话会生成helloworld.exe,OK了

    Processed: 0.018, SQL: 9