CMake打印find_package變量;install文件設置
- 打印find_package找到的各種變量
- 判斷庫文件是否被找到
- install文件設置
- install詳細說明
打印find_package找到的各種變量
目的:find_package后,想使用找到的include/lib文件夾。
find_package(YourPackage REQUIRED)get_property(pkg_vars DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VARIABLES)
foreach(var ${pkg_vars})if(var MATCHES "^YourPackage_")message("${var} = ${${var}}")endif()
endforeach()
判斷庫文件是否被找到
目的:link_directories后,想知道某個庫文件是否能被找到
在CMakeLists.txt文件中,可以使用find_library命令來搜索庫文件的位置。該命令的語法如下:
find_library(<VAR> name1 [path1 path2 ...])
# 搜索名為mylib的庫文件
find_library(MYLIB_LIB mylib)# 如果找到了庫文件,則將其路徑打印出來
if(MYLIB_LIB)message("Library found at ${MYLIB_LIB}")
else()message("Library not found")
endif()
在上述示例中,find_library命令會在默認的系統庫路徑中搜索名為mylib的庫文件,并將其路徑保存到MYLIB_LIB變量中。然后,根據MYLIB_LIB變量的值,打印出相應的信息。
install文件設置
目的:通過install安裝文件
# 設置可執行文件的名稱
set(EXECUTABLE_NAME my_executable)# 添加可執行文件的構建
add_executable(${EXECUTABLE_NAME} main.cpp)# 指定安裝路徑
install(TARGETS ${EXECUTABLE_NAME} DESTINATION /usr/local/bin)
在上面的示例中,install()命令指定了要安裝的目標(即${EXECUTABLE_NAME})和目標的安裝路徑(即/usr/local/bin)。在構建和安裝目標時,該可執行文件將被復制到指定的路徑中。
除了可執行文件,還可以使用install()命令安裝其他類型的文件,比如庫文件、頭文件、配置文件等。只需將目標類型和路徑修改為相應的值即可。
install詳細說明
在CMake中,install命令用于安裝構建生成的二進制文件、庫文件、頭文件以及其他資源文件到指定的目錄。它的基本語法如下:
install(TARGETS <target>[EXPORT <export-name>][RUNTIME DESTINATION <dir>][LIBRARY DESTINATION <dir>][ARCHIVE DESTINATION <dir>][INCLUDES DESTINATION <dir>]
)install(FILES <file>... DESTINATION <dir>)install(DIRECTORY <dir>... DESTINATION <dir>[FILE_PERMISSIONS <permissions>...][DIRECTORY_PERMISSIONS <permissions>...][USE_SOURCE_PERMISSIONS][CONFIGURATIONS [Debug|Release|...]][COMPONENT <component>][FILES_MATCHING][PATTERN <pattern>...][REGEX <regex>...][EXCLUDE][PERMISSIONS <permissions>...][NO_SOURCE_PERMISSIONS][NO_DESTINATION_PERMISSIONS]
)
其中,install命令可以有多個參數,主要有以下幾種用法:
安裝目標文件:通過TARGETS關鍵字指定要安裝的目標文件,并通過DESTINATION關鍵字指定目標文件的安裝路徑。可以選擇安裝的目標類型,如可執行文件(RUNTIME)、庫文件(LIBRARY)和靜態庫文件(ARCHIVE)。
安裝文件:通過FILES關鍵字指定要安裝的文件,并通過DESTINATION關鍵字指定文件的安裝路徑。
安裝目錄:通過DIRECTORY關鍵字指定要安裝的目錄,并通過DESTINATION關鍵字指定目錄的安裝路徑。可以選擇是否遞歸復制目錄中的文件,以及設置目錄和文件的權限等。
其他選項:可以使用其他選項來進一步控制安裝過程,如設置文件的權限、根據配置類型選擇安裝文件等。
在CMakeLists.txt文件中,我們可以在項目的構建配置部分使用install命令來定義安裝規則。例如:
install(TARGETS myapp DESTINATION bin)
install(FILES myheader.h DESTINATION include)
install(DIRECTORY mydir DESTINATION share/myapp)
這樣,當我們使用make install命令時,構建生成的myapp可執行文件將被安裝到bin目錄下,myheader.h頭文件將被安裝到include目錄下,而mydir目錄及其下的文件將被安裝到share/myapp目錄下。