【问题标题】:How to specify install directory for shared libraries for jsoncpp 0.10.7 with cmake?如何使用 cmake 为 jsoncpp 0.10.7 指定共享库的安装目录?
【发布时间】:2019-07-22 21:05:44
【问题描述】:

我正在为嵌入式系统构建https://github.com/open-source-parsers/jsoncpp/tree/0.10.7,因为如果仍然需要 c++03 支持,这是推荐的版本。我的目标是基于 Ubuntu 12.04。

CMakeLists.txt 有 include(GNUInstallDirs) 所以我试图指定安装目录

 cmake -DCMAKE_INSTALL_LIBDIR=/usr -DCMAKE_INSTALL_PREFIX=lib

我已经尝试了这些和排列的各种组合,但是 cmake 坚持将共享库安装在 /usr/lib/x86_64-linux-gnu 中,而我需要它在 /usr/lib 中。

我已遵循此处的建议:How to use CMAKE_INSTALL_PREFIX 但无济于事。

奇怪的是,INCLUDEDIR 变量确实将包含文件放在了我想要的位置。

有没有什么方法可以在不修改 CMakeLists.txt 的情况下获取我想要的库?

【问题讨论】:

    标签: linux cmake c++03 jsoncpp


    【解决方案1】:

    虽然项目包含GNUInstallDirs 模块,但它使用变量CMAKE_INSTALL_LIBDIR(在此模块中定义)only for pkg-config file install location

    对于库项目 introduces LIBRARY_INSTALL_DIR 变量,对于头文件 - INCLUDE_INSTALL_DIR

    所以你需要设置这些变量,而不是GNUInstallDirs模块定义的那些。

    【讨论】:

    • 这是有道理的,当我尝试它时,在 CMakeCache.txt 中设置了正确的值,但奇怪的是它仍然执行“安装:/usr/lib/x86_64-linux-gnu/libjsoncpp.so .0" 等
    • The line 确定最终安装路径包含"${LIBRARY_INSTALL_DIR}/${CMAKE_LIBRARY_ARCHITECTURE}"。根据CMAKE_LIBRARY_ARCHITECTURE的描述,是CMake在检测到系统时设置的。我不确定它是否打算由用户重新定义(cmake-D 选项),但您可以尝试。或者,您可以尝试编辑项目的代码。
    • 该变量不能由用户重新定义。感谢您向我指出相关的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2021-10-11
    • 2018-02-05
    相关资源
    最近更新 更多