<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                #七、cmake 常用變量和常用環境變量 [TOC] ##一,cmake 變量引用的方式 前面我們已經提到了,使用${}進行變量的引用。在IF等語句中,是直接使用變量名而不通過${} 取值 ##二,cmake 自定義變量的方式 主要有隱式定義和顯式定義兩種,前面舉了一個隱式定義的例子,就是PROJECT 指令,它會隱式的定義<projectname>_BINARY_DIR 和<projectname>_SOURCE_DIR 兩個變量。 顯式定義的例子我們前面也提到了,使用SET 指令,就可以構建一個自定義變量了。比如: SET(HELLO_SRC main.c SOURCE_PATH) PROJECT_BINARY_DIR 就可以通過 ${HELLO_SRC} 來引用這個自定義變量了. ##三,cmake 常用變量 1,CMAKE_BINARY_DIR PROJECT_BINARY_DIR <projectname>_BINARY_DIR 這三個變量指代的內容是一致的,如果是in source 編譯,指得就是工程頂層目錄,如果是out-of-source 編譯,指的是工程編譯發生的目錄。PROJECT_BINARY_DIR 跟其他指令稍有區別,現在,你可以理解為他們是一致的。 2,CMAKE_SOURCE_DIR PROJECT_SOURCE_DIR <projectname>_SOURCE_DIR 這三個變量指代的內容是一致的,不論采用何種編譯方式,都是工程頂層目錄。 也就是在in source 編譯時,他跟CMAKE_BINARY_DIR 等變量一致。PROJECT_SOURCE_DIR 跟其他指令稍有區別,現在,你可以理解為他們是一致的。 3,CMAKE_CURRENT_SOURCE_DIR 指的是當前處理的CMakeLists.txt 所在的路徑,比如上面我們提到的src子目錄。 4,CMAKE_CURRRENT_BINARY_DIR 如果是in-source 編譯,它跟CMAKE_CURRENT_SOURCE_DIR 一致,如果是out-of-source 編譯,他指的是target 編譯目錄。使用我們上面提到的ADD_SUBDIRECTORY(src bin) 可以更改這個變量的值。使用SET(EXECUTABLE_OUTPUT_PATH < 新路徑>)并不會對這個變量造成影響,它僅僅 修改了最終目標文件存放的路徑。 5,CMAKE_CURRENT_LIST_FILE 輸出調用這個變量的CMakeLists.txt 的完整路徑 6,CMAKE_CURRENT_LIST_LINE 輸出這個變量所在的行 7,CMAKE_MODULE_PATH 這個變量用來定義自己的cmake 模塊所在的路徑。如果你的工程比較復雜,有可能會自己編寫一些cmake 模塊,這些cmake 模塊是隨你的工程發布的,為了讓cmake 在處理CMakeLists.txt 時找到這些模塊,你需要通過SET指令,將自己的cmake 模塊路徑設置一下。 比如 SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) 這時候你就可以通過INCLUDE 指令來調用自己的模塊了。 8,EXECUTABLE_OUTPUT_PATH 和LIBRARY_OUTPUT_PATH 分別用來重新定義最終結果的存放目錄,前面我們已經提到了這兩個變量。 9,PROJECT_NAME 返回通過PROJECT 指令定義的項目名稱。 ##四,cmake 調用環境變量的方式 使用$ENV{NAME} 指令就可以調用系統的環境變量了。比如 MESSAGE(STATUS “HOME dir: $ENV{HOME}”) 設置環境變量的方式是:SET(ENV{ 變量名} 值) 1,CMAKE_INCLUDE_CURRENT_DIR 自動添加CMAKE_CURRENT_BINARY_DIR 和CMAKE_CURRENT_SOURCE_DIR 到當前處理的CMakeLists.txt 。相當于在每個CMakeLists.txt 加入: INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}${CMAKE_CURRENT_SOURCE_DIR}) 2,CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE 將工程提供的頭文件目錄始終至于系統頭文件目錄的前面,當你定義的頭文件確實跟系統發 生沖突時可以提供一些幫助。3,CMAKE_INCLUDE_PATH 和CMAKE_LIBRARY_PATH 我們在上一節已經提及。 ##五,系統信息 1,CMAKE_MAJOR_VERSION,CMAKE 主版本號,比如2.4.6 中的2 2,CMAKE_MINOR_VERSION,CMAKE 次版本號,比如2.4.6 中的4 3,CMAKE_PATCH_VERSION,CMAKE 補丁等級,比如2.4.6 中的6 4,CMAKE_SYSTEM ,系統名稱,比如Linux-2.6.22 5,CMAKE_SYSTEM_NAME ,不包含版本的系統名,比如Linux 6,CMAKE_SYSTEM_VERSION ,系統版本,比如2.6.22 7,CMAKE_SYSTEM_PROCESSOR,處理器名稱,比如i686. 8,UNIX ,在所有的類UNIX平臺為TRUE,包括OS X 和cygwin 9,WIN32 ,在所有的win32 平臺為TRUE,包括cygwin ##六,主要的開關選項 1,CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ,用來控制IF ELSE 語句的書寫方式,在下一節語法部分會講到。 2,BUILD_SHARED_LIBS 這個開關用來控制默認的庫編譯方式,如果不進行設置,使用ADD_LIBRARY 并沒有指定庫類型的情況下,默認編譯生成的庫都是靜態庫。如果SET(BUILD_SHARED_LIBS ON) 后,默認生成的為動態庫。 3,CMAKE_C_FLAGS 設置C編譯選項,也可以通過指令ADD_DEFINITIONS() 添加。 4,CMAKE_CXX_FLAGS 設置C++ 編譯選項,也可以通過指令ADD_DEFINITIONS() 添加。 ##七、小結 本章介紹了一些較常用的cmake變量,這些變量僅僅是所有cmake 變量的很少一部分,目前cmake的英文文檔也是比較缺乏的,如果需要了解更多的cmake變量,更好的方式是閱讀一些成功項目的cmake 工程文件,比如KDE4的代碼。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看