最近項(xiàng)目需求,需要重新編譯一些代碼划址,達(dá)到不同平臺(tái)運(yùn)行扔嵌,于是再溫習(xí)一下cmake的簡(jiǎn)單用法。
系統(tǒng)環(huán)境是:
- win10+cmake3.13.1
- QT 5.11.1 for Desktop(MinGw 5.3.0 32 bits)
因?yàn)榘惭b的QT版本是MinGw版本猴鲫,就自帶了MinGw編譯器对人。我希望使用這個(gè)QT帶著的MinGw和Cmake來(lái)編譯運(yùn)行c/c++程序。
- 先隨便建議一個(gè)目錄拂共,如我的E:\rhp\MAL\cmake_study\test_1_20181211牺弄,在目錄下分別建立兩個(gè)文件以及一個(gè)空文件夾:
- main.c
- CMakeLists.txt
- 空文件夾:build
建好之后如圖所示:
main.c的內(nèi)容是:
#include <stdio.h>
int main()
{
printf("Hello World!/n");
return 0;
}
CMakeLists.txt內(nèi)容是:
project(HELLO)
set(SRC_LIST main.c)
add_executable(hello ${SRC_LIST})
因?yàn)槲覜](méi)有在CMakeLists.txt文件里面指定編譯器等,所以直接使用cmake命令行進(jìn)行構(gòu)建是不行的宜狐。我們可以通過(guò)cmake-gui來(lái)指定我們的MinGw編譯器势告。
-
打開(kāi)cmake-gui,選擇源碼路徑為E:\rhp\MAL\cmake_study\test_1_20181211抚恒,輸出makefile路徑是:E:/rhp/MAL/cmake_study/test_1_20181211/build
-
如果這個(gè)時(shí)候直接選擇configure咱台,那么也會(huì)報(bào)錯(cuò),說(shuō)找不到編譯器俭驮。這是因?yàn)槲覀儧](méi)有指定我們的gcc和g++路徑回溺。
解決方法:
選擇Configure,出現(xiàn)選項(xiàng)如下圖的時(shí)候混萝,選擇MinGW Makefiles遗遵,Specify native compilers。(如果不出現(xiàn)這個(gè)界面逸嘀,直接報(bào)錯(cuò)车要,那就選擇上一個(gè)界面的file->Delete Cache)
-
然后指定如下圖。gcc/++都在QT的安裝目錄中
-
即使是已經(jīng)指定好了崭倘,這個(gè)時(shí)候configure也會(huì)出錯(cuò)翼岁。這是因?yàn)槲覀冞€沒(méi)有把CMAKE_MAKE_PROGRAM的路徑設(shè)置為我們QT中的MinGw类垫。需要設(shè)置如下圖。
-
如何找到這個(gè)CMAKE_MAKE_PROGRAM呢琅坡?這就需要你勾選了Cmake中的Grouped和Advanced選項(xiàng)悉患,如下圖
-
這個(gè)時(shí)候基本已經(jīng)配置好了,那就直接點(diǎn)擊底下的Configure脑蠕,Generate购撼。
-
這個(gè)時(shí)候我們可以看到之前的bulid空目錄中已經(jīng)變成如下谴仙,已經(jīng)生成了適合本系統(tǒng)以及MinGw編譯器的Makefile
-
于是我們可以直接使用MinGw編譯器生成可執(zhí)行文件了迂求。打開(kāi)命令行,進(jìn)入build目錄晃跺,輸入mingw32-make即可
-
build目錄中已經(jīng)出現(xiàn)了可執(zhí)行文件(exe文件)