我一直在尝试使用 CMake 在工作的 Linux 机器上构建 Mozilla RR。我们有一个稍微古怪的安排,其中共享库存储在网络驱动器上的位置,如/sw/external/product-name/linux64_g63.dll/. 此外,我在$HOME/sw/. (我不是这个盒子上的sudoer。)
我很困惑我应该如何与 CMake 通信以查看非标准目录。到目前为止,我已经捏造了:
PKG_CONFIG_PATH=$HOME/sw/capnproto-0.6.1/lib/pkconfig \
CC=gcc-6.3 CXX=g++-6.3 \
cmake \
-DCMAKE_INSTALL_PREFIX=$HOME/sw/rr-5.1.0 \
-DPYTHON_EXECUTABLE=$HOME/bin/python2 \
-DCMAKE_FIND_ROOT_PATH=$HOME/sw/libseccomp-2.2.3/ \
../src/
Run Code Online (Sandbox Code Playgroud)
这显然不是一个可扩展的解决方案,但它至少成功完成了配置并发出了一些 Makefile。
如果我省略-DCMAKE_FIND_ROOT_PATH=$HOME/sw/libseccomp-2.2.3/,CMake 将失败,抱怨缺少 libseccomp-2.2.3 依赖项。但是如果我确实有这个定义,它就可以工作,告诉我 CMake 了解 libseccomp-2.2.3 文件的位置,因此会正确地将路径添加到必要的编译器调用中。
但是,make没有成功,因为gcc无法从 libseccomp probject 中找到所需的头文件。检查后make VERBOSE=1,我发现 CMake 没有添加-I$HOME/sw/libseccomp-2.2.3/include到gcc调用中。
我觉得这不是正确的方法。我看过的其他答案告诉我修改 CMakeLists.txt 文件,但肯定
是否有解决此问题的规范解决方案?也许每个站点的配置文件会告诉 CMake 如何为我在该站点上构建的所有项目查找库和头文件?
cmake ×1