<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    cmake 學習筆記(四)

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    接前面的一二三,學習一下 CMakeCache.txt 相關的東西。

    CMakeCache.txt

    可以將其想象成一個配置文件(在Unix環境下,我們可以認為它等價于傳遞給configure的參數)。

    • CMakeLists.txt 中通過 set(... CACHE ...) 設置的變量
    • CMakeLists.txt 中的 option() 提供的選項
    • CMakeLists.txt 中find_package() 等find命令引入變量
    • 命令行 cmake . -D <var>:<type>=<value> 定義變量

    cmake 第一次運行時將生成 CMakeCache.txt 文件,我們可以通過ccmake或cmake-gui或make edit_cache對其進行編輯。

    對應于命令行 -D 定義變量,-U 用來刪除變量(支持globbing_expr),比如 cmake -U/*QT/* 將刪除所有名字中帶有QT的cache項。

    變量與Cache

    cmake 的變量系統遠比第一眼看上去復雜:

    • 有些變量被cache,有些則不被cache
    • 被cache的變量
      • 有的不能通過ccmake等進行編輯(internal)
      • 有的(帶有描述和類型)可以被編輯(external)
        • 有的只在ccmake的 advanced 模式出現

    看個例子:

    • SET(var1 13)
      • 變量 var1 被設置成 13
      • 如果 var1 在cache中已經存在,該命令不會overwrite cache中的值
    • SET(var1 13 ... CACHE ...)
      • 如果cache存在該變量,使用cache中變量
      • 如果cache中不存在,將該值寫入cache
    • SET(var1 13 ... CACHE ... FORCE)
      • 不論cache中是否存在,始終使用該值

    要習慣用幫助

    cmake --help-command SET

    find_xxx

    為了避免每次運行都要進行頭文件和庫文件的探測,以及考慮到允許用戶通過ccmake設置頭文件路徑和庫文件的重要性,這些東西必須進行cache。

    • find_path 和 find_library 會自動cache他們的變量,如果變量已經存在且是一個有效值(即不是 -NOTFOUND 或 undefined),他們將什么都不做。
    • 另一方面,模塊查找時輸出的變量(<name>_FOUND,<name>_INCLUDE_DIRS,<name>_LIBRARIES)不應該被cache

    參考

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全