Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Emscripten和vcpkg的CMake可以';t绑定两个工具链文件_Cmake_Emscripten_Vcpkg - Fatal编程技术网

带有Emscripten和vcpkg的CMake可以';t绑定两个工具链文件

带有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和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/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
,但不确定它是否能正常工作。很高兴知道!我会尽快查出来的,非常感谢