博客專欄

        EEPW首頁 > 博客 > 【cmake】CMakeList添加庫|添加頭文件|添加路徑|add_executable、add_library、target_link_libraries|添加編譯選項|宏開關

        【cmake】CMakeList添加庫|添加頭文件|添加路徑|add_executable、add_library、target_link_libraries|添加編譯選項|宏開關

        發布人:電子禪石 時間:2022-01-26 來源:工程師 發布文章

        目錄


        官網查閱


        開胃菜例子


        CMakeLists生成和添加依賴庫


        1、目錄結構


        2、CMakeLists.txt


        3、configure and generate


        4、截圖:


        5、其他設置


        add_library(生成庫),target_link_libraries(生成目標連接的庫),set_target_properties


        CMAKE 添加編譯選項|-g編譯參數/選項


        包含文件的的目錄include_directories


        CMake設置編譯參數/選項


        如何在cmakelists中加入-ldl編譯選項


        CMake指定gcc,g++版本編譯


        CMake 關閉警告的方法


        關閉編譯器優化


        Debug和Release 方案


        About table


        About question


        CMakeLists 實現動態宏開關


        去掉編譯優化


        CMake--List用法


        CmakeLists.txt單行注釋和多行注釋 


        官網查閱

        Search — CMake 3.22.0-rc1 Documentation


        開胃菜例子

        生成一個可執行程序的 CMakeList


        #添加包含文件的的目錄

        include_directories(${cppzmq_INCLUDE_DIR})             

         

        #用${SOURCE_FILES}指定的文件,生成可執行文件sample_project 

        add_executable(sample_project ${SOURCE_FILES}) 

         

        #生成可執行文件sample_project 需要連接 ${CMAKE_THREAD_LIBS_INIT}指定的庫

        target_link_libraries (sample_project  ${CMAKE_THREAD_LIBS_INIT}) 

         

        生成一個.so動態庫的 CMakeList 


        #用${SRC_LISTS}指定的所有的源文件生成一個庫,名字叫libsugan

        add_library(libsugan ${SRC_LISTS})   

         

        #生成libsugan庫需要鏈接 ${OpenCV_LIBS}、 ${PROJECT_SOURCE_DIR}/lib/libCommonUtilities.so、${PROJECT_SOURCE_DIR}/lib/libInuStreams.so

        target_link_libraries(libsugan                 

            ${OpenCV_LIBS}

            ${PROJECT_SOURCE_DIR}/lib/libCommonUtilities.so

            ${PROJECT_SOURCE_DIR}/lib/libInuStreams.so

        )


        原文鏈接:https://blog.csdn.net/bandaoyu/article/details/115165199


        CMakeLists生成和添加依賴庫

        原文;cmake之生成動態庫 - mohist - 博客園


        1、目錄結構

        │  CMakeLists.txt

        │  index.txt

        │  

        ├─build

        ├─include

        │      hello.h

        │      hi.h

        │      

        └─src

                hello.cxx

                hi.cxx

        2、CMakeLists.txt

        cmake_minimum_required(VERSION 3.1)


        #項目名

        project(libhello)


        # 1、指定庫的目錄變量

        set(libhello_src src/hello.cxx)

        # 指定頭文件搜索路徑

        include_directories("${PROJECT_SOURCE_DIR}/include")




        # 2、添加庫(對應的兩個項目)

        add_library( hello_shared SHARED ${libhello_src})

        add_library( hello_static STATIC ${libhello_src})

        #  按照一般的習慣,靜態庫名字跟動態庫名字應該是一致的,只是擴展名不同;

        # 即:靜態庫名為 libhello.a; 動態庫名為libhello.so ;

        # 所以,希望 "hello_static" 在輸出時,不是"hello_static",而是以"hello"的名字顯示,故設置如下

        # SET_TARGET_PROPERTIES (hello_static PROPERTIES OUTPUT_NAME "hello")



        # 3、cmake在構建一個新的target時,會嘗試清理掉其他使用這個名字的庫,

        # 因此,在構建libhello.a時,就會清理掉libhello.so.

        # 為了回避這個問題,比如再次使用SET_TARGET_PROPERTIES定義 CLEAN_DIRECT_OUTPUT屬性。

        SET_TARGET_PROPERTIES (hello_static PROPERTIES CLEAN_DIRECT_OUTPUT 1)

        SET_TARGET_PROPERTIES (hello_shared PROPERTIES CLEAN_DIRECT_OUTPUT 1)



        # 4、按照規則,動態庫是應該包含一個版本號的,

        # VERSION指代動態庫版本,SOVERSION指代API版本。

        SET_TARGET_PROPERTIES (hello_static PROPERTIES VERSION 1.1 SOVERSION 1)

        SET_TARGET_PROPERTIES (hello_shared PROPERTIES VERSION 1.1 SOVERSION 1)



        # 5、若將libhello.a, libhello.so.x以及hello.h安裝到系統目錄,才能真正讓其他人開發使用,

        # 本例中,將hello的共享庫安裝到<prefix>/lib目錄;

        # 將hello.h安裝<prefix>/include/hello目錄。

        #INSTALL (TARGETS hello hello_shared LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)

        #INSTALL (TARGETS hello hello_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)

        #INSTALL (FILES hello.h DESTINATION include/hello)

        3、configure and generate

        xxx/to/path


        cd build

        cmake ..

        4、截圖:

             mac沒有電了, 來個Windows10的截圖吧:




        5、其他設置

          若需要指定輸出路徑,嘗試下面的示例指令:


        # 設置VS會自動新建Debug和Release文件夾

        set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib)

        set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Lib)

        set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Bin)


        # 設置分別設置Debug和Release輸出目錄

        set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Lib)

        set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/Lib)

        set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_SOURCE_DIR}/../../build/Debug)


        set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Lib)

        set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/Lib)

        set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/Bin)

        簡單例子:


        一、生成.so共享庫文件

        下面是我的幾個文件:


        1hello.cpp


        //hello.cpp

         int Calculate_sum_Of_Two_Number(int x,int y)

        {

           int z=0;

           z=x+y;

           return (z);

        }


        2hello.hpp


        //hello.hpp

        #ifndef     __HELLO_H

        #define     __HELLO_H

        int Calculate_sum_Of_Two_Number(int x,int y);

        #endif


        3 main.cpp


        //main.cpp

        #include "hello.hpp"

        #include <stdio.h>

        int main(void)

        {

           int a=0,b=0,c=0;

           printf("please input two parameter:");

           scanf("%d",&a);

           scanf("%d",&b);

           c=Calculate_sum_Of_Two_Number(a,b);

           printf("the sum is : %d",c);

           return 0;

        }


        4 CMakeLists.txt


        #要求的Cmake最低版本

        CMAKE_MINIMUM_REQUIRED( VERSION 2.8)

         

        #工程名稱

        PROJECT(main)

         

        #設置編譯器編譯模式:

        set( CMAKE_BUILD_TYPE "Debug" )

         

        #生成共享庫

        #get the shared package

        #here needs no .hpp

        add_library(calculate_shared SHARED  hello.cpp)

         

        #生成可以執行的文件

        add_executable(main main.cpp)

         

        #連接共享庫

        target_link_libraries(main calculate_shared)


        上面CmakeLists.txt里面, 共享庫的名稱是calculate_shared,這個是我們可以自己更改的。生成的可執行文件是main, 這個名稱也是可以更改的。


        不過需要注意的是,hello.cpp里面不用在包含hello.hpp 了。(汗,因為這個導致出錯,提示說是重復定義函數了);


        編譯生成:


        mkdir build

        cd    build

        cmake ..

        make

        我們就可以看到build生成了 如下的文件:


        CMakeCache.txt  cmake_install.cmake     main

        CMakeFiles      libcalculate_shared.so  Makefile


         libcalculate_shared.so就是生成的共享庫文件。


        他們的路徑是:/home/fan/dev/cmake/4-exer/


        下面有build文件夾,以及main.cpp, hello.cpp, hello.hpp, 


        build文件夾下面有共享庫 libcalculate_shared.so.so


        二、調用共享庫文件



        所有的外部依賴庫都是這樣的,比如opencv ,openni, eigen等等,原理是一樣的,只不過他們已經安裝在系統里面了,可以查找,而這個則是需要我們自己去配置。


        即我上面生成的共享庫文件本質上和opencv的庫是相同的。只不過這個共享庫需要自己手動配置。


        比如我又新建了一個工程,需要調用上面的共享庫 libcalculate_shared.so。


        main.cpp如下:


        //main.cpp

        #include <stdio.h>

        #include <iostream>

        #include "hello.hpp"

        using namespace std;

        int main(void)

        {

           int x=2,y=3;

           int z=0;

           z=Calculate_sum_Of_Two_Number(x,y);

           cout<<"the result is:"<<z<<endl;

           return 0;

        }


        那么在CMakeLists.txt里面,我需要告訴CMake, 這個頭文件可以在哪里找到,頭文件所定義的函數又可以在哪里找到。


        上面hello.hpp的路徑是:/home/fan/dev/cmake/4-exer/hello.hpp


        libcalculate_shared.so的路徑是/home/fan/dev/cmake/4-exer/build/libcalculate_shared.so


        則CMakeLists.txt如下:


        CMAKE_MINIMUM_REQUIRED( VERSION 2.8)

         

        PROJECT(main)

        #設置編譯器編譯模式:

        SET( CMAKE_BUILD_TYPE "Debug" )

         

        SET(HELLO_INCLUE 

            /home/fan/dev/cmake/4-exer/)

         

        SET(HELLO_SRC 

            /home/fan/dev/cmake/4-exer/build/libcalculate_shared.so)

         

        INCLUDE_DIRECTORIES(${HELLO_INCLUE})

         

        add_executable(main main.cpp)

         

        target_link_libraries(main ${HELLO_SRC})


        這里要注意一些細節(對于我這個渣渣來說的)


        1、${   }這種形式代表一個變量,比如上面的,HELLO_INCLUE ,就是我自己定義的一個變量。


        2、頭文件包含到頭文件所在的文件夾,即 /home/fan/dev/cmake/4-exer/


        3、共享庫要指明具體的共享庫 ,精確到.so


        其實主要的就是指明這個調用這個共享庫的時候,使用的頭文件,以及共享庫本身所在的位置,然后包含鏈接就可以了。


        安裝過的共享庫(例如opencv)就不用這么麻煩了,因為它的地址都放在了變量里面。


        Opencv的依賴添加

        比如Opencv, 它的頭文件和.so文件都已經放在了系統變量里面,不用向上面自己定義了(上面例子里面的頭文件和共享庫文件的地址都是我自己設置的)


        它的CMakeLists.txt如下:


        find_package(OpenCV REQUIRED)


        include_directories(${OPENCV_INCLUDE_DIRS})


        target_link_libraries(MAIN ${OpenCV_LIBS})


        只需要查找就可以了,OpenCV_LIBS  和  OPENCV_INCLUDE_DIRS  都是系統幫我們已經定義好的,所以比較容易


        參考博客:


        1、如何寫自己的CmakeLists.txt   https://www.cnblogs.com/chaofn/p/10160555.html


        2、 【OpenCV】使用CMake鏈接自己路徑下面的OpenCV庫 https://blog.csdn.net/twt520ly/article/details/81981473


        原文鏈接:https://blog.csdn.net/qq_37761077/article/details/88750711


        add_library(生成庫),target_link_libraries(生成目標連接的庫),set_target_properties

        add_library(libsugan ${SRC_LISTS})    #用${SRC_LISTS}生成靜態庫libsugan


        target_link_libraries(libsugan      #生成靜態庫libsugan還需鏈接依賴庫${OpenCV_LIBS}…

            ${OpenCV_LIBS}

            ${PROJECT_SOURCE_DIR}/lib/libCommonUtilities.so

            ${PROJECT_SOURCE_DIR}/lib/libInuStreams.so

        )


        #上面的配置生成名字為libsugan的靜態庫,但Linux下對庫的存儲格式是lib+name.a,所以庫libsugan存儲出來的結果就是liblibsugan.a,看著很別扭。用下面這句,保證了存儲出來的靜態庫叫做libsugan.a:


        set_target_properties(libsugan PROPERTIES OUTPUT_NAME "sugan")


        #但是請千萬注意,在整個CmakeLists.txt里


        #如果想鏈接生成的這個庫必須使用    “add_library(libsugan ${SRC_LISTS})”指明的名字。

        set_target_properties(libsugan PROPERTIES OUTPUT_NAME "sugan")


        add_executable(demo ./src/main.cpp)

        target_link_libraries(demo libsugan)


        原例子:


        add_library,target_link_libraries,set_target_properties,target_link_libraries使用聯系_michaelhan3的博客-CSDN博客


        #工程名字

        project(Camera_sugan)                  

         

        #編譯最低cmake版本

        cmake_minimum_required(VERSION 2.6)    

         

        #設置c++編譯器

        set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )  

         

        #在整個電腦上找opencv包

        find_package(OpenCV REQUIRED)    

         

        #包含頭文件路徑

        include_directories(             

            ./include/inudev/

            ./src/

        )

         

        #將所有的源文件列為一個集合,集合名字叫做SRC_LISTS

        set(SRC_LISTS                   

            ./src/inuitive.cpp

            ./src/runCamera_Qfeeltech.cpp

        )

         

        #將集合里的所有的源文件生成一個靜態庫,該靜態庫的名字libsugan,

        注意,在整個CmakeLists里都要用libsugan這個

        add_library(libsugan ${SRC_LISTS})   

         

        #名字來代替之前那個集合生成的庫。

        target_link_libraries(libsugan    #鏈接靜態庫需要的依賴庫

            ${OpenCV_LIBS}

            ${PROJECT_SOURCE_DIR}/lib/libCommonUtilities.so

            ${PROJECT_SOURCE_DIR}/lib/libInuStreams.so

        )


        原文鏈接:https://blog.csdn.net/michaelhan3/article/details/69568362


        CMAKE 添加編譯選項|-g編譯參數/選項

        add_definitions 和add_compile_options,二者添加的編譯選項是針對所有編譯器的(包括c和c++編譯器)。


        add_definitions 和add_compile_options的區別是:


        add_definitions 可用于添加任何標志,但旨在添加預處理器定義。


        此命令已被替代方案取代:

        使用 add_compile_definitions() 添加預處理器定義。

        使用 include_directories() 添加包含目錄。

        使用 add_compile_options() 添加其他選項。


        add_definitions — CMake 3.22.0-rc1 Documentation


        添加 -g編譯參數/選項


        方法一:add_definitions("-g")/ add_compile_options



        在文件 CMakeLists.txt添加下面一條語句

        add_definitions("-g")


        添加其他編譯參數/選項


        例如下面的代碼


        #判斷編譯器類型,如果是gcc編譯器,則在編譯選項中加入c++11支持


        if(CMAKE_COMPILER_IS_GNUCXX)

            add_compile_options(-std=c++11)

            message(STATUS "optional:-std=c++11")   

        endif(CMAKE_COMPILER_IS_GNUCXX)

         




        使用add_compile_options添加-std=c++11選項,是想在編譯c++代碼時加上c++11支持選項。但是因為add_compile_options是針對所有類型編譯器的,所以在編譯c代碼時,就會產生如下warning


        J:\workspace\facecl.gcc>make b64

        [ 50%] Building C object libb64/CMakeFiles/b64.dir/libb64-1.2.1/src/cdecode.c.obj

        cc1.exe: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C

        [100%] Building C object libb64/CMakeFiles/b64.dir/libb64-1.2.1/src/cencode.c.obj

        cc1.exe: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C

        Linking C static library libb64.a

        [100%] Built target b64

        雖然并不影響編譯,但看著的確是不爽啊,要消除這個warning,就不能使用add_compile_options,而是只針對c++編譯器添加這個option。


        方法二:set


        所以如下修改代碼,則警告消除。


        #判斷編譯器類型,如果是gcc編譯器,則在編譯選項中加入c++11支持

        if(CMAKE_COMPILER_IS_GNUCXX)

            set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")

            message(STATUS "optional:-std=c++11")   

        endif(CMAKE_COMPILER_IS_GNUCXX)



        原文鏈接:https://blog.csdn.net/qinglongzhan/article/details/80743731


        包含文件的的目錄include_directories

        include_directories(${cppzmq_INCLUDE_DIR})  //添加包含文件的的目錄


        add_definitions 可用于添加任何標志,但旨在添加預處理器定義。


        此命令已被替代方案取代:

        使用 add_compile_definitions() 添加預處理器定義。

        使用 include_directories() 添加包含目錄。

        使用 add_compile_options() 添加其他選項。


        CMake設置編譯參數/選項

        而set命令設置CMAKE_C_FLAGS或CMAKE_CXX_FLAGS變量則是分別只針對c和c++編譯器的


        對c編譯器的


        set(CMAKE_C_FLAGS"-O3 -fopenmp -fPIC -Wno-deprecated -Wenum-compare -std=c++14")


        針對c++編譯器的


        set(CMAKE_CXX_FLAGS "-O3 -fopenmp -fPIC -Wno-deprecated -Wenum-compare -std=c++14")


        如何在cmakelists中加入-ldl編譯選項

        cmakelists.txt中,在增加可執行程序后增加TARGET_LINK_LIBRARIES

        eg:



        add_executable(xx ${ALL_F} ${WE_F})

        TARGET_LINK_LIBRARIES(dl)

        TARGET_LINK_LIBRARIES(m)


        set(CMAKE_C_FLAGS "-ldl")


        在add_executable(${PROJECT_NAME} "main.cpp")后面添加

        target_link_libraries(${PROJECT_NAME} dl)


        target_link_libraries(exe1 -Wl, - -whole-archive lib1 -Wl, -  no-whole-archive)

        CMake指定gcc,g++版本編譯

        系統默認的gcc/g++在/usr/bin目錄下。


        我們升級安裝的gcc目錄在/usr/local/bin目錄下,現在我們希望使用升級后的gcc。


        通過百度搜索出來的結果,大多是如下操作:


        在CMakeLists.txt中調用編譯器之前添加:


        1


        2


        SET(CMAKE_C_COMPILER "/usr/local/bin/gcc")


        SET(CMAKE_CXX_COMPILER "/usr/local/bin/g++")


        然而經過本人親自實踐,該方法不起作用,正確的做法是:


        執行cmake命令之前,在shell終端先設置如下兩個變量:


        1


        2


        export CC=/usr/local/bin/gcc


        export CXX=/usr/local/bin/g++


        然后再執行cmake等后續命令,這樣就可以用指定的編譯器版本了。


        【已解決】CMake指定gcc,g++版本編譯 | 勤奮的小青蛙


        CMake 關閉警告的方法

        在CMakeLists.txt中添加add_definitions(-w)


        應用于單個target


          if(CMAKE_COMPILER_IS_GNUCC)

         target_compile_options(main PRIVATE"-Wall")

         endif()

         if(MSVC)

         target_compile_options(main PRIVATE"/ W4")

         endif()

          

        應用于所有target


          if(CMAKE_COMPILER_IS_GNUCC)

         set(CMAKE_CXX_FLAGS"$ {CMAKE_CXX_FLAGS} -Wall")

         endif()

         if(MSVC)

         set(CMAKE_CXX_FLAGS"$ {CMAKE_CXX_FLAGS} / W4")

         endif()

          

        注意:為GCC或/ WX添加-Werror以便MSVC將所有警告視為錯誤。這會將所有警告視為錯誤。這對于新項目來說可以方便地執行嚴格的警告。


        另外, -Wall 并不意味著"所有錯誤";從歷史意義上講,它意味著"每個人都可以達成一致的所有錯誤""。從 -Wall -Wextra 開始,然后仔細閱讀您的版本的GCC手冊,并找到 else 編譯器可以為您提供關于警告的信息。


        CMake和編譯器警告 - IT屋-程序員軟件開發技術分享社區


        關閉編譯器優化

        (未驗證)


        1)add_compile_options(-fno-elide-constructors)    #關閉編譯器優化


        2)set(CMAKE_CXX_FLAGS "-fno-elide-constructors ${CMAKE_CXX_FLAGS}")


        Debug和Release 方案

        About table

        Configurations in terms of gcc/clang compilers (CMake 3.4.1):


        Debug: -g

        Release: -O3 -DNDEBUG

        RelWithDebInfo: -O2 -g -DNDEBUG

        MinSizeRel: -Os -DNDEBUG

        It means:


          +---------------+--------------+--------------+----------+

          |               | optimization | assert works | stripped |

          +---------------+--------------+--------------+----------|

          |     Debug     |     no       |     yes      |    no    |

          |    Release    |    full      |      no      |   yes    |

          | RelWithDebInfo|    good      |      no      |    no    |

          |   MinSizeRel  |    size      |      no      |   yes    |

          +---------------+--------------+--------------+----------+

        So I don't agree with your MinSizeRel description because in this case I think both MinSizeRel and Release are stripped.


        About question

        As far as I understand you want no extra flags at all (no -g, -O* or -DNDEBUG). For Makefile-like generators:


        > cmake -H. -B_builds -DCMAKE_BUILD_TYPE=MyConf -DCMAKE_CXX_FLAGS_MYCONF=""

        > cmake --build _builds

        CMakeLists 實現動態宏開關

        去掉編譯優化

        在CMakeList中添加:


        if(NOT CMAKE_BUILD_TYPE)

          set(CMAKE_BUILD_TYPE Release)

        endif()

         

        set(CMAKE_CXX_FLAGS "-Wall -Wextra")

        set(CMAKE_CXX_FLAGS_DEBUG "-g")

        set(CMAKE_CXX_FLAGS_RELEASE "-O3")

        執行的時候


        cmake  -DCMAKE_BUILD_TYPE=Release


        也可以在上一層(調用本CMakeList.txt的)的CMakeList.txt中添加下面:


        option (CMAKE_BUILD_TYPE "Use tutorial provided math implementation"  ON)


        表示啟用CMAKE_BUILD_TYPE 宏。


        option (CMAKE_BUILD_TYPE "Use tutorial provided math implementation"  OFF) #表示關


        參考:


        c++ - Optimize in CMake by default - Stack Overflow


        debugging - How to compile without optimizations -O0 using CMake - Unix & Linux Stack Exchange


        例子


        最近在工作中需要通過一份C代碼控制邏輯走向,網上找了一下資料,發現可以通過在CMakeLists文件中動態定義宏開關,從而能夠達到編譯出不同邏輯流的代碼。


        具體步驟:


        首先,我在src代碼里編寫了若干debug的輸出:


        #IFDEF DEBUG

         

            some print command;

         

        #ENDIF

        然后,在CMakeLists文件中添加DEBUG的定義:


        IF (CMAKE_BUILD_TYPE STREQUAL DEBUG)

            ADD_DEFINITIONS(-DDEBUG)

        ENDIF()

        最后,在cmake的時候設置參數 -DCMAKE_BUILD_TYPE 為 DEBUG:


        $ cmake .. -DCMAKE_BUILD_TYPE=DEBUG

        $ make -j4

        這樣再運行可執行文件時就會打印出some print command的debug信息了。如果不想看到debug信息,只需在參數中不設置DEBUG參數,或者將DEBUG參數設置為其它值即可(以下兩種方式二者選其一):


        $ cmake ..

        $ cmake .. -DCMAKE_BUILD_TYPE=RELEASE

        到此 CMakeLists 實現動態宏開關介紹完成。


        原文鏈接:https://blog.csdn.net/qq_19734597/article/details/104461963


        CMake--List用法

        CMake--List用法 - narjaja - 博客園


        CmakeLists.txt單行注釋和多行注釋 

        單行注釋:使用“#”

        多行注釋:使用“#[[ ]]”


        ————————————————

        版權聲明:本文為CSDN博主「bandaoyu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

        原文鏈接:https://blog.csdn.net/bandaoyu/article/details/115165199


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。

        DIY機械鍵盤相關社區:機械鍵盤DIY




        關鍵詞: cmake

        技術專區

        關閉
        主站蜘蛛池模板: 黑河市| 嘉黎县| 广河县| 秭归县| 工布江达县| 敦化市| 吴桥县| 蓝山县| 公主岭市| 石河子市| 乐陵市| 花莲市| 乌兰浩特市| 新宁县| 永州市| 华蓥市| 西乡县| 霸州市| 左云县| 北京市| 娱乐| 阿图什市| 正蓝旗| 隆尧县| 娱乐| 合川市| 荥经县| 安义县| 卢龙县| 冕宁县| 海宁市| 南皮县| 石首市| 宝应县| 湄潭县| 九江县| 西充县| 华阴市| 丰镇市| 宁城县| 桐庐县|