簡體   English   中英

cmake:用於架構的 find_package

[英]cmake: find_package for architecture

交叉編譯時,我習慣於使用工具鏈文件來指定(除其他外) CMAKE_SYSTEM_PROCESSOR

在 Ubuntu 和其他 Linux 發行版中,它似乎能夠安裝用於其他架構的庫。 例如,如果我在 x86-64 機器上工作,並且想要為 64 位 ARM 安裝libpng ,那么我會:

dpkg --add-architecture arm64
apt-get update
apt-get -y install libpng-dev:arm64

所以在這之后,我有了 arm64 的 libpng 二進制文件。 這些似乎安裝在/usr/lib/aarch64-linux-gnu

現在我的理解是,如果我嘗試在我的 CMakeLists.txt 文件中找到libpng (請參閱libpng 的 CMake 編譯選項):

find_package(PNG REQUIRED)
include_directories(${PNG_INCLUDE_DIR})
target_link_libraries(example ${PNG_LIBRARY})

它將找到主機(在本例中為 x86-64)的包,而不是目標(arm64)。

有沒有辦法告訴 Cmake 的find_package目標架構? 在理想情況下, find_package會在搜索之前檢查CMAKE_SYSTEM_PROCESSOR 我想知道處理這種情況的最簡單和最通用的方法,因為我正在鏈接多個庫。

現在我知道的唯一方法是硬編碼目標庫的路徑。

像模塊FindPNG.cmake使用find_pathfind_library找到所有的事情。

您可以通過將CMAKE_LIBRARY_ARCHITECTURE設置為aarch64-linux-gnu來影響find_library 嘗試在您的工具鏈文件中設置CMAKE_LIBRARY_ARCHITECTURE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM