我想用emscripten编译SealPIR库来生成一个wasm文件。使用此命令时:emcmake cmake .
我得到了这个错误:
CMake Error at CMakeLists.txt:19 (find_package):
By not providing "FindSEAL.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "SEAL", but
CMake did not find one.
Could not find a package configuration file provided by "SEAL" (requested
version 3.2.0) with any of the following names:
SEALConfig.cmake
seal-config.cmake
Add the installation prefix of "SEAL" to CMAKE_PREFIX_PATH or set
"SEAL_DIR" to a directory containing one of the above files. If "SEAL"
provides a separate development package or SDK, be sure it has been
installed.
-- Configuring incomplete, errors occurred!
See also "/home/Zied/webassembly/SealPIR/CMakeFiles/CMakeOutput.log".
emcmake: error: 'cmake . -DCMAKE_TOOLCHAIN_FILE=/home/Zied/webassembly/emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CROSSCOMPILING_EMULATOR="/home/Zied/webassembly/emsdk/node/14.15.5_64bit/bin/node"' failed (1) 密封件安装正确。当我在不使用emcmake的情况下运行相同的命令时,它工作得很好。这是我的CMakeList
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
project(SealPIR VERSION 2.1 LANGUAGES CXX)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
add_executable(main
main.cpp
)
add_library(sealpir STATIC
pir.cpp
pir_client.cpp
pir_server.cpp
)
find_package(SEAL 3.2.0 EXACT REQUIRED)
target_link_libraries(main sealpir SEAL::seal)发布于 2021-06-17 00:06:33
当使用工具链文件进行交叉编译时,CMake将默认禁用系统库。它不会搜索任何目录,以避免查找与目标系统不兼容的文件。
你认为你没有使用工具链文件?再想一想!emcmake对你隐瞒了这一点。仔细查看错误输出。
在这里,您编译了SEAL库,但将其安装在默认路径中,即/usr/local。
我们可以告诉CMake在那里显式搜索,但我不建议,但如果有效,您可以尝试:
emcmake cmake . -CMAKE_PREFIX_PATH=/usr/local正确的解决方案是创建一个包含所有emscripten库的目录:
# In the SEAL build directory
emcmake cmake .. -DCMAKE_INSTALL_PREFIX=/home/anblic/webassembly/install然后,在该目录中安装库后,可以在与安装路径相同的目录中设置前缀路径:
# Assuming you're in a build/ subdirectory
emcmake cmake .. -DCMAKE_PREFIX_PATH=/home/anblic/webassembly/installhttps://stackoverflow.com/questions/68004788
复制相似问题