【问题标题】:CMake with Emscripten and vcpkg can't bind two TOOLCHAIN_FILES带有 Emscripten 和 vcpkg 的 CMake 无法绑定两个 TOOLCHAIN_FILES
【发布时间】:2020-07-23 19:57:04
【问题描述】:

vcpkg 和 Emscripten 都需要将 CMAKE_TOOLCHAIN_FILE 设置为

分别为vcpkg/scripts/buildsystems/vcpkg.cmakeemsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake

我该怎么做?或者让他们一起工作的最佳方式是什么?

现在我有一个天真的尝试:

set(CMAKE_TOOLCHAIN_FILE "/Users/screen-photo-to-text/vcpkg/scripts/buildsystems/vcpkg.cmake" "/Users/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake")

但它得到找不到工具链文件错误,我找不到让它工作的方法

【问题讨论】:

  • CMAKE_TOOLCHAIN_FILE 获取单个文件的路径。您必须自己编写,可能只使用 include 函数来包含两者。
  • VCPKG_CHAINLOAD_TOOLCHAIN_FILE,也许你可以通过Emscripten.cmake,但不确定它是否能正常工作。

标签: cmake emscripten vcpkg


【解决方案1】:

令我高兴的是,最​​近 vcpkg 获得了 Emscripten 支持 - 请参阅 PR

可以像这样安装包:

vcpkg install zlib:wasm32-emscripten

用法是非常常用的标准,例如 CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(zpipe CXX)
find_package(ZLIB REQUIRED)
add_executable(zpipe zpipe.cpp)
target_link_libraries(zpipe ZLIB::ZLIB)

棘手的部分仍然是如何组合两个工具链。这个调用对我有用:

mkdir build
cd build
emcmake "c:\Program files\CMake\bin\cmake" .. "-G" "Ninja" "-DCMAKE_MAKE_PROGRAM=F:/vcpkg/downloads/tools/ninja/1.10.1-windows/ninja.exe" "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=%EMSDK%/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" "-DVCPKG_TARGET_TRIPLET=wasm32-emscripten" "-DCMAKE_TOOLCHAIN_FILE=F:/vcpkg/scripts/buildsystems/vcpkg.cmake" "-DCMAKE_BUILD_TYPE=Release"
emmake ninja

通常,这需要先设置 Emscripten 环境变量(例如使用 emsdk_env.bat)。

未能提供此询问的第二个工具链将导致类似wasm-ld: error: unknown argument: --out-implib 的错误

如果由于某种原因(例如,不是绝对路径)emcmake 找不到 CMake 可执行文件,可能会导致类似 FileNotFoundError: [WinError 2] The system cannot find the file specified 的错误

如果是CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set.,正如提示的那样,CMAKE_MAKE_PROGRAM 需要设置为指向 ninja 可执行文件。

【讨论】:

  • 很高兴知道!我会尽快检查,非常感谢您
猜你喜欢
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多