在尋找autotools的文章當中,發現,有一個新的東西CMake,聽說比automake好用。
那就研究一下吧~
實驗一:單一程式檔的 Hello World:
先來個第一步吧~hello world!!
建立CMake/hello/
下面有兩個檔案:CMakeLists.txt與hello.cren@notebook:~/Desktop$ tree CMake
CMake
|-- hello
| |-- CMakeLists.txt
| `-- hello.c
hello.c
#include <stdio.h>
int main(){
printf("Hello World!\n");
return 0;
}
CMakeLists.txt
# Project name
PROJECT (HELLO)
# set the variable HELLO_SRCS to be "hello.c"
SET (HELLO_SRCS hello.c)
# helloDemo executable built from hello.c
ADD_EXECUTABLE (hello ${HELLO_SRCS})
$ cmake .
$ make VERBOSE=1
實驗二:把 Hello World 變成函式庫
實驗三:試試使用外部函式庫 libpng 的情況
實驗四:換試試寫個簡單的 Qt4 程式
請參考這裡
小技巧:
哇!在產生Makefile的過程中,會產生一堆檔案,因為要透過svn上資料到server的話,沒有把這一些資料刪除,會很占空間的,這個時候out-source building就派上用場啦~
在剛剛的hello資料夾下產生一個build/的資料夾
$ mkdir build
$ cd build
$ cmake ..
$ make
這個時候產生的檔案都會在build/的資料夾下喔~要刪掉直接刪它就好啦~
用CMake編出來的Makefile在編譯時,不會出現詳細的編譯過程,原來加上VERBOSE=1就可以啦
$ make VERBOSE=1
CMakeLists.txt的內容說明
# Project name
PROJECT(HELLO)
# Source code subdirectories
SUBDIRS(src test)
# Create a library from the hello.cxx file
ADD_LIBRARY(Hello hello.c)
# Location of library include files
INCLUDE_DIRECTORIES(${HELLO_SOURCE_DIR}/src)
# Library location for the linker
LINK_DIRECTORIES(${HELLO_BINARY_DIR}/src)
# helloDemo executable built from demo.c
ADD_EXECUTABLE(helloDemo demo.c)
# Link the executable to the Hello library.
TARGET_LINK_LIBRARIES(helloDemo Hello)
參考資料:
把玩 CMake 的第一步
CMake
貓也會的 CMake
CMake實踐
Jserv「貓也會的 CMake」簡報投影片
在 linux 下使用 CMake 構建應用程序
沒有留言:
張貼留言