带有Emscripten和vcpkg的CMake可以';t绑定两个工具链文件
vcpkg和Emscripten都需要将CMAKE_工具链文件设置为带有Emscripten和vcpkg的CMake可以';t绑定两个工具链文件,cmake,emscripten,vcpkg,Cmake,Emscripten,Vcpkg,vcpkg和Emscripten都需要将CMAKE_工具链文件设置为 vcpkg/scripts/buildsystems/vcpkg.cmake和emsdk/upstream/emscripten/cmake/Modules/Platform/emscripten.cmake 我该怎么做?或者,让他们一起工作的最佳方式是什么 现在我有一个天真的尝试: set(CMAKE_TOOLCHAIN_FILE "/Users/screen-photo-to-text/vcpkg/scripts
vcpkg/scripts/buildsystems/vcpkg.cmake
和emsdk/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")
但是它找不到工具链文件,这是一个错误,我也找不到一个方法来让它工作。让我高兴的是,最近vcpkg得到了Emscripten的支持-请参阅 可以这样安装软件包:
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参数--out implib
如果出于任何原因(例如非绝对路径),emcmake无法找到CMake可执行文件,则可能会导致出现类似FileNotFoundError:[WinError 2]的错误,系统无法找到指定的文件
如果出现
CMake错误:CMake无法找到与“忍者”对应的构建程序。CMAKE\u MAKE\u程序未设置。
如前所述,CMAKE\u MAKE\u程序
需要设置为指向忍者可执行文件。CMAKE\u工具链文件
采用单个文件的路径。您必须编写自己的,可能只是使用include
函数来包含这两个文件。有VCPKG\u CHAINLOAD\u TOOLCHAIN\u FILE
可以传递Emscripten.cmake
,但不确定它是否能正常工作。很高兴知道!我会尽快查出来的,非常感谢