gpt4 book ai didi

c++ - 在哪里放置 emscripten 和 CMake 的库

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:51 25 4
gpt4 key购买 nike

当我想在“普通”程序中使用库时,我使用 apt 安装它们

apt-get install libjsoncpp-dev
apt-get install libassimp-dev

然后在 CMakeLists.txt 中查找 FIND_LIBRARY

FIND_LIBRARY(JSONCPP_LIBRARY NAMES jsoncpp)
TARGET_LINK_LIBRARIES(hello ${JSONCPP_LIBRARY})

FIND_LIBRARY(ASSIMP_LIBRARY NAMES assimp)
TARGET_LINK_LIBRARIES(hello ${ASSIMP_LIBRARY})

当使用 emscripten 编译时,我显然必须以另一种方式安装库。我创建了一个目录 $HOME/emscripten-prefix 并使用 --prefix=$HOME/emscripten-prefix 将它们手动编译为静态库,并尝试 CMAKE_INSTALL_PREFIX 像这样在该目录中查找(对于 CMAKE_PREFIX_PATH 也是如此):

cmake \
-DCMAKE_TOOLCHAIN_FILE=$EMSCRIPTEN/cmake/Platform/Emscripten.cmake \
-DCMAKE_BUILD_TYPE=Debug \
-G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=$HOME/emscripten-prefix

不幸的是,它没有用。 strace 透露 CMake 会在前面加上CMAKE_FIND_ROOT_PATH(在 $EMSCRIPTEN/cmake/Platform/Emscripten.cmake 中设置为“${EMSCRIPTEN_ROOT_PATH}/cmake”)到所有路径。我尝试使用 -DCMAKE_FIND_ROOT_PATH 更改它,但 Emscripten.cmake 覆盖了它。

正确的做法是什么?我想我可以通过制作一个复制 Emscripten.cmake 并修改 CMAKE_FIND_ROOT_PATH 的脚本来构建它,但这听起来像是错误的方式。

最佳答案

这个问题有一个简单的解决方案:

在调用 find_library() 之前:

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)

之后:

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

同样,在调用 find_package() 之前:

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)

之后:

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

关于c++ - 在哪里放置 emscripten 和 CMake 的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22729823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com