學習cmake的運用,就是在clion常看到的CMakeLists.txt

看到一個很好的cmake博客html

https://www.cnblogs.com/ningskyer/articles/7158948.htmllinux

 

學習到經常使用的一些小用法,從最簡單開始了json

在 linux 平臺下使用 CMake 生成 Makefile 並編譯的流程以下:數組

  1. 編寫 CMake 配置文件 CMakeLists.txt 。
  2. 執行命令 cmake PATH 或者 ccmake PATH 生成 Makefile  ccmake 和 cmake 的區別在於前者提供了一個交互式的界面。。其中, PATH 是 CMakeLists.txt 所在的目錄。
  3. 使用 make 命令進行編譯。

編寫 CMakeLists.txt

首先編寫 CMakeLists.txt 文件,並保存在與 main.cc 源文件同個目錄下:學習

 

1
2
3
4
5
6
7
8
# CMake 最低版本號要求
cmake_minimum_required (VERSION 2.8)
 
# 項目信息
project (Demo1)
 
# 指定生成目標
add_executable(Demo main.cc)

 

CMakeLists.txt 的語法比較簡單,由命令、註釋和空格組成,其中命令是不區分大小寫的。符號 # 後面的內容被認爲是註釋。命令由命令名稱、小括號和參數組成,參數之間使用空格進行間隔。ui

對於上面的 CMakeLists.txt 文件,依次出現了幾個命令:spa

  1. cmake_minimum_required:指定運行此配置文件所需的 CMake 的最低版本;
  2. project:參數值是 Demo1,該命令表示項目的名稱是 Demo1 。
  3. add_executable: 將名爲 main.cc 的源文件編譯成一個名稱爲 Demo 的可執行文件。

編譯項目

以後,在當前目錄執行 cmake . ,獲得 Makefile 後再使用 make 命令編譯獲得 Demo1 可執行文件。code

 

     

project(json_example)                                                              #項目名稱            
                                                                
add_library (cJson_lib  cJSON.h cJSON.c)                                                    #添加lib            
                                                                
set(main_files main.c)                                                              #設置搭配文件            
add_executable(main_example ${main_files})                                                    #在搭配文件上,新增程序            main_example
target_link_libraries(main_example cJson_lib m)                                                 #在程序上,連接lib            
                                                                
set(create_files create.c)                                                                      #設置搭配文件            
add_executable(create_example ${create_files})                                                          #在搭配文件上,新增程序            create_example
target_link_libraries(create_example cJson_lib m)                                                    #在程序上,連接lib            
                                                                
set(test_files test.c)                                                                      #設置搭配文件            
add_executable(test_example ${test_files})                                                           #在搭配文件上,新增程序            test_example
target_link_libraries(test_example cJson_lib m)                                                    #在程序上,連接lib    htm

 

#添加外部文件夾
if(NOT OUT-DIR)                
    set( OUT-DIR /home/test/CWork/OutDir/)    #定義OUT-DIR位置
endif()
if( IS_DIRECTORY ${OUT-DIR} )
    add_subdirectory( ${OUT-DIR} OutDir.out)
    message("Add OUT-DIR OK" )
else()
    message(FATAL_ERROR   "INVALID FOLDER 'OUT-DIR'=${OUT-DIR}" )
endif()blog

 

在Linux上,原本是用上只是用上了C語言的,後來想插入C++,就出現下面這個錯誤了

錯誤:CMake can not determine linker language for target:

解決:PROJECT("name" C)  改成  PROJECT("name" C CXX)

if(NOT MqttJson-DIR)    set( MqttJson-DIR /home/test/CWork/MqttJson/)endif()if( IS_DIRECTORY ${MqttJson-DIR} )    add_subdirectory( ${MqttJson-DIR} MqttJson.out)    message("MqttJson-DIR OK" )else()    message(FATAL_ERROR   "INVALID FOLDER 'MqttJson-DIR'=${MqttJson-DIR}" )endif()

相關文章
相關標籤/搜索