選擇cmake-x.x.x.tar.gz
找個目錄解壓縮
tar -xzvf cmake-x.x.x.tar.gz
cd cmake-x.x.x
依次執行:
./bootstrap
make
make install
cmake 會預設安裝在 /usr/local/bin 下面
檢查版本
cmake –version
檔案
#include
using
namespace
std;
int main()
#cmake最小需要版本
cmake_minimum_required(version 2.8)
#專案名稱
project (helloworld)
#包含原程式,即把給定的源程式複製給變數src_list
set(src_list main.cpp)
#生成可執行檔案
add_executable(helloworld $)
cmake_minimum_required(version 2.8)
project(helloworld)
#查詢在某個路徑下的所有原始檔,並賦給變數dir_src
aux_source_directory(./ dir_src)
add_executable(helloworld $)
新增靜態庫或者動態庫
假設我們程式用到了在/usr/lib下的乙個靜態庫libmy.a,那麼需要新增如下兩個命令:
#庫所在位置
link_directories(/usr/lib)
#程式編譯時候鏈結庫
target_link_libraries(helloworld my)
例一
我們將main.cpp檔案拆成三個:main.cpp, hello.cpp, hello.hpp,並將hello.cpp生成乙個庫然後再使用
#include "hello.hpp"
int main()
#include
#include "hello.hpp"
using
namespace
std;
void hello(const
char * name)
#ifndef dbzhang_hello_
#define dbzhang_hello_
void hello(const
char* name);
#endif
cmake_minimum_required(version 3.2)
project(helloworld)
set(lib_src hello.cpp)
set(dir_src main.cpp)
add_library(libhello $)
add_executable(helloworld $)
target_link_libraries(helloworld libhello)
例二
如果把源**分開放在不同路徑下,就像我們平時的檔案組織結構一樣
+
|+--- cmakelist.txt
+--+ src/
| |
| +--- main.cpp
| /--- cmakelist.txt
|+--+ lib/
| |
| +--- hello.hpp
| +--- hello.cpp
| /--- cmakelist.txt
|/--+ build/
每個源檔案目錄都需要乙個cmakelists.txt檔案:
cmake_minimum_required(version 3.2)
project(helloworld)
#告訴cmake去子目錄尋找新的cmakelist.txt 子檔案
add_subdirectory(src)
add_subdirectory(libhello)
#用於指明標頭檔案所在的路徑
include_directories($/libhello)
set(dir_src main.cpp)
add_executable(helloworld $)
target_link_libraries(helloworld libhello)
set(lib_src hello.cpp)
#這裡用的靜態庫,如果用動態庫只需在該命令中加入引數shared:
#add_library(libhello shared $)
add_library(libhello $)
set_target_properties(libhello properties output_name "hello")
例三
如何可執行檔案在 bin 目錄,庫檔案在 lib 目錄,即build中的目錄結構為
+ build/
|+--+ bin/
| |
| /--- hello.exe
| /--+ lib/
|/--- hello.lib
cmake_minimum_required(version 3.2)
project(helloworld)
#可以指定其對應的目錄在build中的名字
add_subdirectory(src bin)
add_subdirectory(libhello lib)
#src/cmakelist.txt 檔案
include_directories($/libhello)
#link_directories($/lib)
set(dir_src main.c)
set(executable_output_path $/bin)
add_executable(helloworld $)
target_link_libraries(helloworld libhello)
#libhello/cmakelist.txt 檔案
set(lib_src hello.c)
add_library(libhello $)
set(library_output_path $/lib)
set_target_properties(libhello properties output_name "hello")
注:
詳細:
從簡單到複雜的cmake學習: cmake學習筆記從(一)到(六):
CMake 基本用法
1.最基本的cmakelists 檔案 它將 main.c 編譯為 hello 的可執行檔案 project hello 專案名稱 set src list main.c 原始檔 add executable hello 可執行檔案cmake 是強烈推薦外部編譯的,內部編譯會生成一些無法自動刪除的中...
cmake基本用法
我們編寫乙個c 單例類,使用cmake構建專案,主要是為了記錄一下cmake的基本用法。首先專案資料夾為demoproject,我們建立乙個main.cpp作為我們的主檔案,建立乙個子資料夾singleton,在singleton中建立singleton.h和singleton.cpp作為我們的單例...
cmake基本用法
宣告最低版本型別 cmake minimum required version 2.8 建立乙個工程,工程名為hello project hello 設定編譯模式 編譯模式有 debug 和 release debug 為除錯模式,可進行斷點測試 release 為發行模式,速度更快 set cma...