使用CmakeLists应该知道的一些知识
Cmake使用方法
命令:ccmake directory(含有CmakeLists.txt)? ? ? ? ? ? ?#配置CmakeLists.txt里面相關的變量,一般不需要
命令:cmake directory(含有CmakeLists.txt)? ? ? ? ? ? ??#根據CmakeLists.txt生成Makefile文件
命令:Make? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #執行Makefile
基本結構
依賴CMakeLists.txt文件,項目主目標一個,主目錄中可指定包含的子目錄
在項目CMakeLists.txt中使用project指定項目名稱,add_subdirectory添加子目錄
子目錄CMakeLists.txt將從父目錄CMakeLists.txt繼承設置
Cmakelists文件命令
指定編譯包含源文件
方法1:
add_library(demo demo.cpp test.cpp util.cpp)方法2:先搜索文件夾在添加文件
aux_source_directory(. SRC_LIST) # 搜索當前目錄下的所有.cpp文件 add_library(demo ${SRC_LIST})設置編譯輸出類型
add_executable(demo demo.cpp) # 生成可執行文件 exe 可執行 add_library(common STATIC util.cpp) # 生成靜態庫 .lib .a add_library(common SHARED util.cpp) # 生成動態庫或共享庫 .dll .so設置鏈接庫搜索目錄
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/libs)列表變量操作
List(關鍵字 <list> …<index>…<element>…)
關鍵字
? LENGTH ?? ? 返回list的長度
? GET ??? ? 返回list中index的element到value中
? APPEND ??? ? 添加新element到list中
? FIND ?? 返回list中element的index,沒有找到返回-1
? INSERT ? 將新element插入到list中index的位置
? REMOVE_ITEM ? 從list中刪除某個element
? REMOVE_AT ? 從list中刪除指定index的element
? REMOVE_DUPLICATES?????? ? 從list中刪除重復的element
? REVERSE 將list的內容反轉
? SORT ? 將list按字母順序排序
查找安裝好的庫
find_package(name??REQUIRED)
REQUIRED ? 找不到name就報錯停止cmake處理
執行../share/cmake-3.16/Modules下Find<name>.cmake文件
CMAKE_MODULE_PATH
目錄列表,分號分割,find_package和include命令會使用。默認為空,由工程設置
執行一個cpp文件(main)
file(READ “…/vtkRequireLargeFilesSupport.cxx" VTK_REQUIRE_LARGE_FILE_SUPPORT_FILE) check_cxx_source_runs("${VTK_REQUIRE_LARGE_FILE_SUPPORT_FILE}"VTK_REQUIRE_LARGE_FILE_SUPPORT)Cmake參考文檔路徑
https://cmake.org/cmake/help/latest/index.html
總結
以上是生活随笔為你收集整理的使用CmakeLists应该知道的一些知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux中查询显卡硬件的几种命令(记录
- 下一篇: 0. 导读 每个学习过线性代数的人,心中