一種通用CMakeLists模板

2021-10-09 21:13:03 字數 1427 閱讀 4198

#1.cmake verson,指定cmake版本

cmake_minimum_required(version 3.16)

#2.project name,指定專案的名稱,一般和專案的資料夾名稱對應

project(demo)

#3.head file path,頭檔案目錄

include_directories(include)

#include_directories(include)

#include_directories(include)

#4.source directory,源檔案目錄

aux_source_directory(src dir_srcs)

#5.set environment variable,設定環境變數,編譯用到的原始檔全部都要放到這裡,否則編譯能夠通過,但是執行的時候會出現各種問題,比如"symbol lookup error ***xx , ndefined symbol"

set(cmake_cxx_standard 14)

#set(cmake_cxx_standard 14)

#set(cmake_cxx_standard 14)

#交叉編譯配置,後續補充

# 設定可執行檔案輸出路徑 set(cmake_runtime_output_directory build)

#6.add executable file,新增要編譯的可執行檔案

add_executable($$

)#7.add link library,新增可執行檔案所需要的庫,比如我們用到了libm.so(命名規則:lib+name+.so),就新增該庫的名稱

target_link_libraries(

$ m)

#target_link_libraries($ m)

#target_link_libraries($ m)

個人不喜歡cmake過程中的cahe等檔案,看著亂,本來打算用cmake內部進行處理,沒找到方法,於是決定用指令碼處理,如下:

1)每次構建makefile時候順帶清理過程中的檔案

2)順帶進行make

#!/bin/bash

make clean;

rm -rf cmakecache.txt cmakefiles cmake_install.cmake makefile;

cmake cmakelists.txt ;

make

;rm -rf cmakecache.txt cmakefiles cmake_install.cmake ;

Makefile的一種通用寫法

管理linux環境下的c c 大型專案,如果有乙個智慧型的build system會起到事半功倍的效果,本文描述linux環境下大型工程專案子目錄makefile的一種通用寫法,使用該方法,當該子目錄內的檔案有增刪時無需對makefile進行改動,可以說相當的智慧型。下面先貼 為減小篇幅,一些非關鍵...

一種Java通用的FeatureMap訪問設計

首先,定義map物件,將map的value型別指定為object,它可以儲存任意基礎型別或自定義型別的值物件。由於值型別為object,在讀取map元素時,往往需要將值強制轉換為需要的型別。其實,可以返回值型別為范型優化 將型別轉換前置到get方法中,如下 created by jerry on 1...

介面表 一種通用機制

需求 生成一種單據 發貨單。發貨單分為頭和行,頭根據行的一些屬性分組產生。需要各種驗證。同時要插入批次表。在整個系統中,不止一處會需要生成發貨單。分析 在系統中每次都要生成發貨單的地方都寫一套程式,會發現每套程式都比較類似。面對比較類似的程式時,就要分解程式,把相同的部分和不同的部分區分開。針對該程...