cmake是個神奇的東西。稍微花了點時間學(xué)習(xí)了一下下。
先列出參考資料:
cmake tutorial
在 linux 下使用 CMake 構(gòu)建應(yīng)用程序
其實我只看了第二個。
最簡單的例子
最簡單的例子就兩個文件
- main.cpp
- CMakeLists.txt
這都是從第二個參考資料抄來的。源代碼我也順便貼一下。
#include<iostream>
int main()
{
std::cout<<"Hello word!"<<std::endl;
return 0;
}
PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main ${DIR_SRCS})
使用的步驟是:
cmake .
make
還是挺簡單的吧。
Makefile結(jié)構(gòu)的分析
cmake的語法分析不是本文重點,本文重點是生成的Makefile結(jié)構(gòu)是什么樣子的。說實話,有點變態(tài)啊。
嘗試畫一個結(jié)構(gòu)圖:
Makefile
|
+--- CMakeFiles/Makefile2
|
+ --- CMakeFiles/main.dir/build.make
每一個cmake出來的工程都有一個目錄 CMakeFiles,所有的東西都在這個里面了。
這個目錄中都會有一個文件Makefile2,這是一個隱藏boss。不同目錄,不同目標(biāo)的處理在這個文件中。
比如我們的main.cpp就被單獨列出了一個目錄CMakeFiles/main.dir/。而這個目錄中最后才包含了真正編譯main.cpp規(guī)則的文件--CMakeFiles/main.dir/build.make。
更改規(guī)則重新編譯
這點cmake有點土,需要手動清除配置的文件。
make clean
find . -name "CMakeCache.txt" | xargs rm -f
find . -name "CMakeFiles" | xargs rm -rf
cmake
當(dāng)然為了節(jié)省點時間,可以只刪除特定目錄下的配置文件。
好了,湊合先寫到這里吧。