CMake 學習筆記整理 7

2021-07-10 17:16:25 字數 1823 閱讀 8407

把筆記分享給大家!

接上篇內容 cmake 學習筆記整理(6)

######################t17

# 之前的筆記t9, install(files xyz.h destination include/xyz)

# proj2/src

# main.cpp

#include

int main()

# cmake 被設計成了可擴充套件的架構, 可以通過編寫一些通用的模組來擴充套件cmake

# 新增模組路徑

# 新工程目錄:

# proj2/

# cmakelists.txt

set(cmake_module_path $/cmake)

add_subdirectory(src)

# note:

# 不要把這兩行寫反!

# find_package(): 於之相對的檔案是 find

# 就是這個 proj2/cmake/findcba.cmake

# proj2/src

# cmakelists.txt

find_package(cba)

set(cmake_loose_loop_constructs on)

if(cba_found)

add_executable(hello main.cpp)

include_directories($)

target_link_libraries(hello $)

endif()

# 這次依舊使用我們已經編譯好的libcba.so 和xyz.h

# 這個是.cmake 檔案!

# proj2/

# findcba.cmake

find_path(xyz_include_dir xyz.h /usr/include/xyz)

find_library(cba_library

names

cbapaths

/usr/lib

)set(cmake_loose_loop_constructs on)

if(xyz_include_dir and cba_library)

set(cba_found true)

endif()

if(cba_found)

# find_package(cba quiet) 將不會執行下面

if(not cba_found_quietly)

message(status "found cba: $")

endif()

else()

if(cba_find_required)

message(fatal_error "could not find cba library")

endif()

endif()

# cmake配置, make編譯, 先清除無關和已配置和已編譯的檔案

# proj2/build

cmake ..

make

# result 完美執行 proj2/src/hello output china::foo

-- found cba: /usr/lib/libcba.so

...[100%] building cxx object src/cmakefiles/hello.dir/main.o

linking cxx executable hello

[100%] built target hello

# comment:

# 不懂就查 :-d

#

CMake學習筆記

cmake是乙個跨平台的安裝編譯工具,能夠生成各種各樣的makefile或者project檔案。cmake並不直接構建出最終的軟體,而是產生標準的構建檔案 即工程檔案,如unix下的makefile或windows下的c project檔案 然後構建者就可以使用平台的ide環境進行常規構建了。在wi...

CMAKE學習筆記

方法1 cmake中有兩個變數用於指定輸出檔案的位置,通過設定這兩個變數executable output path和library output path的值指定exe檔案和lib檔案放置的目錄,如 set executable output path set library output pat...

Cmake學習筆記

環境 centos7 cmake version 2.8.12.2 常用命令 cmake minimum directoy viersion 2.8 注 version只能大寫 project your project name 這個順序一定要靠前,不然後面會有報錯 aux source direc...