我使用vcpkg和cmake来做一些跨平台的开发。在WSL完成了一个示例代码后,我尝试将工具链更改为arm-linux-gnueabihf,然后如下所示。
[cmake] Could not find a configuration file for package "plog" that is compatible
[cmake] with requested version "".
[cmake]
[cmake] The following configuration files were considered but not accepted:
[cmake]
[cmake] /home/fuxiaoer/vcpkg/installed/x64-linux/share/plog/plogConfig.cmake, version: 1.1.9 (64bit)
[cmake]
[cmake] Call Stack (most recent call first):
[cmake] CMakeLists.txt:11 (find_package)
[cmake]
字符串
其中plog
是我在这个项目中尝试使用的一个库。
然后我删除plog:x64-linux.rebuild my project.it显示:
Could not find a package configuration file provided by "plog" with any of
[cmake] the following names:
[cmake]
[cmake] plogConfig.cmake
[cmake] plog-config.cmake
型
我尝试在[vcpkgroot]/triplets/arm-linux-gnueabihf.cmake为vcpkg编写一个arm-linux-gnueabihf. cmake文件。
set(VCPKG_TARGET_ARCHITECTURE arm)
set(VCPKG_CMAKE_SYSTEM_NAME Linux)
set(VCPKG_CMAKE_SYSTEM_PROCESSOR arm)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
型
然后使用vcpkg install plog:arm-linux-gnueabihf
安装一个新的库,该库使用arm-linux-gnueabihf构建,并且它工作正常。其中/vcpkg/installed
显示3个文件夹
arm-linux-gnueabihf vcpkg x64-linux
型
当转到我的cmake项目时,它显示了与我提到的before.it相同的消息,似乎cmake没有更改其搜索路径,仍然使用默认路径x64-linux来查找
我在我的cmakelists.txt中添加了一个新行来告诉cmake plog在哪里。
set(plog_DIR "/home/fuxiaoer/vcpkg/installed/arm-linux-gnueabihf/share/plog")
型
那么这个项目终于可以成功地建立了。这意味着我使用的方法奏效了。
我的CMakeLists.txt如下所示。
cmake_minimum_required(VERSION 3.0.0)
project(cmake_with_ninja_and_vcpkg VERSION 0.1.0 LANGUAGES C CXX)
include(CTest)
enable_testing()
# set(plog_DIR "/home/fuxiaoer/vcpkg/installed/arm-linux-gnueabihf/share/plog")
find_package(Eigen3 CONFIG REQUIRED)
find_package(plog CONFIG REQUIRED)
add_executable(cmake_with_ninja_and_vcpkg main.cpp)
target_link_libraries(cmake_with_ninja_and_vcpkg PRIVATE Eigen3::Eigen)
target_link_libraries(cmake_with_ninja_and_vcpkg PRIVATE plog::plog)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
型
1条答案
按热度按时间d7v8vwbk1#
我尝试将我的工具链改为arm-linux-gnueabihf
更改工具链只需要一个干净的重新配置(意味着使用一个新的文件夹或删除CMakeCache.txt)。如果不这样做,就不能更改vcpkg三元组。
看起来cmake没有改变它的搜索路径,仍然使用默认路径x64-linux来查找
如果您试图切换到一个已经配置好的项目,或者忘记将
VCPKG_TARGET_TRIPLET
设置为您实际想要使用的三元组,就会发生这种情况。您可能还需要设置VCPKG_HOST_TRIPLET
。不要忘记,这需要在project()
之前定义