C++ 在何处放置emscripten和CMake的库

C++ 在何处放置emscripten和CMake的库,c++,cmake,emscripten,C++,Cmake,Emscripten,当我想在“普通”程序中使用库时,我会用apt安装它们 apt-get install libjsoncpp-dev apt-get install libassimp-dev 然后在CMakeLists.txt中查找_库 FIND_LIBRARY(JSONCPP_LIBRARY NAMES jsoncpp) TARGET_LINK_LIBRARIES(hello ${JSONCPP_LIBRARY}) FIND_LIBRARY(ASSIMP_LIBRARY NAMES assimp) TAR

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

apt-get install libjsoncpp-dev
apt-get install libassimp-dev
然后在CMakeLists.txt中查找_库

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):

不幸的是,它没有起作用。strace透露CMake会提前准备 CMAKE_FIND_ROOT_PATH(在$EMSCRIPTEN/CMAKE/Platform/EMSCRIPTEN.CMAKE中设置为“${EMSCRIPTEN_ROOT_PATH}/CMAKE”)到所有路径。我试着用-DCMAKE\u FIND\u ROOT\u PATH来更改它,但是Emscripten.cmake超越了这一点


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

有一个简单的解决方案:

在调用find_library()之前:

之后:

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
同样,在调用find_package()之前:

之后:

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)