新建工程並用cmake編譯和安裝

2021-07-30 03:34:03 字數 2526 閱讀 3621

本文介紹新建標準的cmake工程及使用cmake編譯、cmakelists的編寫、編譯和安裝標準的cmake工程。

(1)cmake工程目錄結構

在cmake工程中有不同的資料夾。資料夾結構通常如下。

(2)資料夾介紹

src 原始檔所在位置的目錄

include 標頭檔案所在位置的目錄

build 編譯生成的檔案所在的目錄

hellofunlib資料夾 為hellofun庫函式原始檔所在資料夾

bin 生成的主函式所在的資料夾

lib 生成的庫函式所在資料夾

任務:

(1)編譯main函式生成cmakehello可執行檔案,並放在/build/bin檔案下

(2)編譯hellofuc.c生成 動態鏈結庫函式檔案hellofuc.so,並放在/build/lib資料夾下。

實現:

(a)頂層/cmakelists.txt

cmake_minimum_required (version 2.6)

add_subdirectory(src)

add_subdirectory(hellofunlib)

message(status "this is project_binary_dir "

$)message(status "this is project_binary_dir "

$)#指定可執行檔案和庫檔案目錄

set(executable_output_path $/bin)

set(library_output_path $/lib)

(b)主函式/src/main.c

#include 

int main()

(c)src資料夾src/cmakelists.txt

add_executable(cmakehello main.c)
(d)庫函式資料夾函式/hellofunlib/hellofun.c

#include 

#include "hellofun.h"

void hello()

(e)庫函式資料夾標頭檔案/hellofunlib/hellofun.h

#ifndef hellofun_h

#define hellofun_h

#include

void hellofunc();

#endif

(f)庫函式資料夾hellofunlib/cmakelists.txt

add_library(hellofun shared hellofun.c)
最後切換到/bulid目錄下

輸入命令

cmake ..
make
發現在/build/src目錄下生成可執行檔案cmakehello

在/build/bin目錄下生成庫函式檔案libhellofun.so

任務:

將生成可執行檔案cmaketest安裝到/home/programfiles/bin

生成庫函式檔案libhellofun.so 安裝到/home/programfiles/lib

(a)在頂層 /cmakelists.txt

加入set(cmake_install_prefix /home/programfiles)

(b)在src資料夾 src/cmakelists.txt

加入

install

(targets cmakehello runtime

destination bin)

(c)在庫函式資料夾hellofunlib/cmakelists.txt加入

install

(targets hellofun library

destination lib)

然後切換到build資料夾下

cmake ..

make

make install

可以發現

生成可執行檔案cmaketest已經安裝到/home/programfiles/bin

庫函式檔案libhellofun.so 已經安裝到/home/programfiles/lib

新建工程並用cmake編譯和安裝

本文介紹新建標準的cmake工程及使用cmake編譯 cmakelists的編寫 編譯和安裝標準的cmake工程。1 cmake工程目錄結構 在cmake工程中有不同的資料夾。資料夾結構通常如下。2 資料夾介紹 src 原始檔所在位置的目錄 include 標頭檔案所在位置的目錄 build 編譯生...

CMake構建工程

目標 使用cmake構建多級的目錄的c 專案,包含動態庫的引用。檔案結構 cmakelists.txt 1 build lib 這裡存放動態庫 cmakelists.txt 2 lib bye cmakelists.txt 3 bye.cc 4 lib hello cmakelists.txt 5 ...

pycharm新建工程

建立乙個first的project,將其設定為source root.並且新建兩個資料夾,hello 和 test,這裡的資料夾相當於 package 也可以使用new pathon package 建立,建立好之後會有相應的init.py檔案,分別在資料夾下編寫 hellomodule.py 和 ...