在cmake 學習筆記(三) 中簡單學習了 find_package 的 model 模式,在cmake 學習筆記(四)中了解乙個cmakecache相關的東西。但靠這些知識還是不能看懂pyside使用cmakelists檔案,接下來繼續學習find_package的 config 模式及package configure檔案相關知識
當cmakelists.txt中使用find_package命令時,首先啟用的是 module 模式:
如果finder未找到,則開始 config 模式:
/(w)
/(cmake|cmake)/
(w)/*/
(w)/*/(cmake|cmake)/
(w)/(share|lib)/cmake/*/
(u)/(share|lib)/*/
(u)/(share|lib)/*/(cmake|cmake)/
(u)
# - try to find apiextractor該檔案是通過 configure_file 機制生成的,我們看看 apiextractorconfig.cmake.in 檔案:# apiextractor_include_dir - directories to include to use apiextractor
# apiextractor_libraries - files to link against to use apiextractor
set(apiextractor_include_dir "d:/shiboken/dist/include/apiextractor")
if(msvc)
set(apiextractor_library "d:/shiboken/dist/lib/apiextractor.lib")
elseif(win32)
set(apiextractor_library "d:/shiboken/dist/bin/apiextractor.dll")
else()
set(apiextractor_library "d:/shiboken/dist/lib/apiextractor.dll")
endif()
set(apiextractor_include_dir "@cmake_install_prefix@/include/apiextractor@apiextractor_suffix@")對應的命令(變數的定義略過)if(msvc)
set(apiextractor_library "@lib_install_dir@/@cmake_shared_library_prefix@apiextractor@apiextractor_suffix@@[email protected]")
elseif(win32)
set(apiextractor_library "@cmake_install_prefix@/bin/@cmake_shared_library_prefix@apiextractor@apiextractor_suffix@@library_output_suffix@@cmake_shared_library_suffix@")
else()
set(apiextractor_library "@lib_install_dir@/@cmake_shared_library_prefix@apiextractor@apiextractor_suffix@@library_output_suffix@@cmake_shared_library_suffix@")
endif()
configure_file("$/apiextractorconfig.cmake.in" "$/apiextractorconfig.cmake" @only)該檔案用來比對版本是否匹配,看看apiextractorconfigversion.cmake.in 的內容:
set(package_version @apiextractor_version@)一般提供設定下面的變數if("$" version_less "$" )
set(package_version_compatible false)
else("$" version_less "$" )
set(package_version_compatible true)
if( "$" strequal "$")
set(package_version_exact true)
endif( "$" strequal "$")
endif("$" version_less "$" )
package_version
完整的版本字串
package_version_exact
如果完全匹配為真
package_version_compatible
如果相容為真
package_version_unsuitable
如果不可用為真
find_package進而根據這些設定
_version
full provided version string
_version_major
major version if provided, else 0
_version_minor
minor version if provided, else 0
_version_patch
patch version if provided, else 0
_version_tweak
tweak version if provided, else 0
from:
cmake學習筆記 五
在cmake 學習筆記 三 中簡單學習了 find package 的 model 模式,在cmake 學習筆記 四 中了解乙個cmakecache相關的東西。但靠這些知識還是不能看懂pyside使用cmakelists檔案,接下來繼續學習find package的 config 模式及packag...
CMake學習筆記
cmake是乙個跨平台的安裝編譯工具,能夠生成各種各樣的makefile或者project檔案。cmake並不直接構建出最終的軟體,而是產生標準的構建檔案 即工程檔案,如unix下的makefile或windows下的c project檔案 然後構建者就可以使用平台的ide環境進行常規構建了。在wi...
CMAKE學習筆記
方法1 cmake中有兩個變數用於指定輸出檔案的位置,通過設定這兩個變數executable output path和library output path的值指定exe檔案和lib檔案放置的目錄,如 set executable output path set library output pat...