cmake安裝 用法

2021-07-31 02:29:56 字數 3597 閱讀 4031

選擇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...