【问题标题】:CMake: set target install directoryCMake:设置目标安装目录
【发布时间】:2023-01-25 18:00:52
【问题描述】:

Gittyup 中,我们使用了 libgit2 的补丁版本,我们将其作为子模块包含在存储库中。现在的问题是,如果我想安装这个包,libgit2 的补丁版本也将被尝试安装到我全局定义的安装前缀。在像 Linux 这样的系统上,这会对已经安装的系统 libgit2 版本造成问题,因为它会覆盖不需要的文件。 现在的想法是将 libgit2 安装到它自己的前缀 /lib/Gittyup/... 而不是安装 libgit2 目标的标头。

是否有可能阻止安装这些标头并为 libgit2 库设置新前缀?

https://github.com/Murmele/Gittyup/tree/fixCmakeInstallationPaths

-- Installing: /<prefix>/lib/pkgconfig/libgit2.pc
-- Installing: /<prefix>/lib/libgit2.a
-- Installing: /<prefix>/include/git2
-- Installing: /<prefix>/include/git2/config.h
-- Installing: /<prefix>/include/git2/pack.h
-- Installing: /<prefix>/include/git2/oidarray.h
-- Installing: /<prefix>/include/git2/cherrypick.h
-- Installing: /<prefix>/include/git2/worktree.h
-- Installing: /<prefix>/include/git2/sys
-- Installing: /<prefix>/include/git2/sys/config.h
-- Installing: /<prefix>/include/git2/sys/cred.h
-- Installing: /<prefix>/include/git2/sys/alloc.h
-- Installing: /<prefix>/include/git2/sys/merge.h
-- Installing: /<prefix>/include/git2/sys/filter.h
-- Installing: /<prefix>/include/git2/sys/index.h
-- Installing: /<prefix>/include/git2/sys/credential.h
-- Installing: /<prefix>/include/git2/sys/transport.h
-- Installing: /<prefix>/include/git2/sys/diff.h
-- Installing: /<prefix>/include/git2/sys/refdb_backend.h
-- Installing: /<prefix>/include/git2/sys/mempack.h
-- Installing: /<prefix>/include/git2/sys/refs.h
-- Installing: /<prefix>/include/git2/sys/reflog.h
-- Installing: /<prefix>/include/git2/sys/stream.h
-- Installing: /<prefix>/include/git2/sys/odb_backend.h
-- Installing: /<prefix>/include/git2/sys/path.h
-- Installing: /<prefix>/include/git2/sys/repository.h
-- Installing: /<prefix>/include/git2/sys/commit.h
-- Installing: /<prefix>/include/git2/sys/openssl.h
-- Installing: /<prefix>/include/git2/sys/hashsig.h
-- Installing: /<prefix>/include/git2/remote.h
-- Installing: /<prefix>/include/git2/odb.h
-- Installing: /<prefix>/include/git2/describe.h
-- Installing: /<prefix>/include/git2/indexer.h
-- Installing: /<prefix>/include/git2/merge.h
-- Installing: /<prefix>/include/git2/net.h
-- Installing: /<prefix>/include/git2/filter.h
-- Installing: /<prefix>/include/git2/index.h
-- Installing: /<prefix>/include/git2/credential.h
-- Installing: /<prefix>/include/git2/transport.h
-- Installing: /<prefix>/include/git2/ignore.h
-- Installing: /<prefix>/include/git2/diff.h
-- Installing: /<prefix>/include/git2/notes.h
-- Installing: /<prefix>/include/git2/annotated_commit.h
-- Installing: /<prefix>/include/git2/transaction.h
-- Installing: /<prefix>/include/git2/stash.h
-- Installing: /<prefix>/include/git2/tag.h
-- Installing: /<prefix>/include/git2/pathspec.h
-- Installing: /<prefix>/include/git2/revparse.h
-- Installing: /<prefix>/include/git2/trace.h
-- Installing: /<prefix>/include/git2/graph.h
-- Installing: /<prefix>/include/git2/cert.h
-- Installing: /<prefix>/include/git2/revert.h
-- Installing: /<prefix>/include/git2/credential_helpers.h
-- Installing: /<prefix>/include/git2/refs.h
-- Installing: /<prefix>/include/git2/blame.h
-- Installing: /<prefix>/include/git2/proxy.h
-- Installing: /<prefix>/include/git2/blob.h
-- Installing: /<prefix>/include/git2/reflog.h
-- Installing: /<prefix>/include/git2/status.h
-- Installing: /<prefix>/include/git2/apply.h
-- Installing: /<prefix>/include/git2/global.h
-- Installing: /<prefix>/include/git2/deprecated.h
-- Installing: /<prefix>/include/git2/object.h
-- Installing: /<prefix>/include/git2/revwalk.h
-- Installing: /<prefix>/include/git2/stdint.h
-- Installing: /<prefix>/include/git2/odb_backend.h
-- Installing: /<prefix>/include/git2/rebase.h
-- Installing: /<prefix>/include/git2/types.h
-- Installing: /<prefix>/include/git2/repository.h
-- Installing: /<prefix>/include/git2/signature.h
-- Installing: /<prefix>/include/git2/errors.h
-- Installing: /<prefix>/include/git2/commit.h
-- Installing: /<prefix>/include/git2/strarray.h
-- Installing: /<prefix>/include/git2/oid.h
-- Installing: /<prefix>/include/git2/reset.h
-- Installing: /<prefix>/include/git2/cred_helpers.h
-- Installing: /<prefix>/include/git2/refspec.h
-- Installing: /<prefix>/include/git2/patch.h
-- Installing: /<prefix>/include/git2/message.h
-- Installing: /<prefix>/include/git2/version.h
-- Installing: /<prefix>/include/git2/clone.h
-- Installing: /<prefix>/include/git2/attr.h
-- Installing: /<prefix>/include/git2/refdb.h
-- Installing: /<prefix>/include/git2/submodule.h
-- Installing: /<prefix>/include/git2/checkout.h
-- Installing: /<prefix>/include/git2/tree.h
-- Installing: /<prefix>/include/git2/mailmap.h
-- Installing: /<prefix>/include/git2/buffer.h
-- Installing: /<prefix>/include/git2/common.h
-- Installing: /<prefix>/include/git2/branch.h
-- Installing: /<prefix>/include/git2.h
-- Installing: /<prefix>/./indexer
-- Set runtime path of "/<prefix>/./indexer" to "$ORIGIN"
-- Installing: /<prefix>/./relauncher
-- Set runtime path of "/<prefix>/./relauncher" to "$ORIGIN"
-- Installing: /<prefix>/./Gittyup
-- Set runtime path of "/<prefix>/./Gittyup" to "$ORIGIN"
-- Installing: /<prefix>/share/applications/Gittyup.desktop
-- Installing: /<prefix>/share/metainfo/Gittyup.appdata.xml
-- Installing: /<prefix>/share/Gittyup/changelog.html
-- Installing: /<prefix>/share/Gittyup/acknowledgments.html
-- Installing: /<prefix>/share/Gittyup/privacy.html
-- Installing: /<prefix>/share/Gittyup/plugin.html
-- Installing: /<prefix>/share/Gittyup/emoji.json
-- Installing: /<prefix>/share/Gittyup/mergetools
-- Installing: /<prefix>/share/Gittyup/credential.lua
-- Installing: /<prefix>/share/Gittyup/editor.lua
-- Installing: /<prefix>/share/Gittyup/global.lua
-- Installing: /<prefix>/share/Gittyup/lexers.lua
-- Installing: /<prefix>/share/Gittyup/merge.lua
-- Installing: /<prefix>/share/Gittyup/terminal.lua
-- Installing: /<prefix>/share/Gittyup/update.lua
-- Installing: /<prefix>/share/Gittyup/window.lua
-- Installing: /<prefix>/share/Gittyup/dictionaries/Source.txt
-- Installing: /<prefix>/share/Gittyup/dictionaries/de_DE_frami.aff
-- Installing: /<prefix>/share/Gittyup/dictionaries/de_DE_frami.dic
-- Installing: /<prefix>/share/Gittyup/dictionaries/en_US.aff
-- Installing: /<prefix>/share/Gittyup/dictionaries/en_US.dic
-- Installing: /<prefix>/share/Gittyup/dictionaries/es_ANY.aff
-- Installing: /<prefix>/share/Gittyup/dictionaries/es_ANY.dic
-- Installing: /<prefix>/share/Gittyup/dictionaries/pt_BR.aff
-- Installing: /<prefix>/share/Gittyup/dictionaries/pt_BR.dic
-- Installing: /<prefix>/share/Gittyup/themes/Dark.lua
-- Installing: /<prefix>/share/Gittyup/themes/Default.lua
-- Installing: /<prefix>/share/Gittyup/themes/System.lua
-- Installing: /<prefix>/share/Gittyup/plugins/Banned.lua
-- Installing: /<prefix>/share/Gittyup/plugins/Comments.lua
-- Installing: /<prefix>/share/Gittyup/plugins/Line Length.lua
-- Installing: /<prefix>/share/Gittyup/plugins/Whitespace.lua
-- Installing: /<prefix>/share/Gittyup/plugins/banned.txt
-- Installing: /<prefix>/share/Gittyup/lexers/actionscript.lua
-- Installing: /<prefix>/share/Gittyup/lexers/ada.lua
-- Installing: /<prefix>/share/Gittyup/lexers/zig.lua
-- Installing: /<prefix>/share/locale/Gittyup/gittyup_de.qm
-- Installing: /<prefix>/share/locale/Gittyup/gittyup_ru.qm
-- Installing: /<prefix>/share/locale/Gittyup/gittyup_en.qm
-- Installing: /<prefix>/share/locale/Gittyup/gittyup_es.qm
-- Installing: /<prefix>/share/locale/Gittyup/gittyup_ja.qm
-- Installing: /<prefix>/share/locale/Gittyup/gittyup_pt.qm
-- Installing: /<prefix>/share/locale/Gittyup/gittyup_pt_BR.qm
-- Installing: /<prefix>/share/locale/Gittyup/gittyup_zh_CN.qm
-- Installing: /<prefix>/share/locale/Gittyup/qtbase_de.qm
-- Installing: /<prefix>/share/locale/Gittyup/qtbase_ru.qm
-- Installing: /<prefix>/share/locale/Gittyup/qtbase_en.qm
-- Installing: /<prefix>/share/locale/Gittyup/qtbase_es.qm
-- Installing: /<prefix>/share/locale/Gittyup/qtbase_ja.qm
-- Installing: /<prefix>/share/locale/Gittyup/qtbase_pt_BR.qm
-- Installing: /<prefix>/share/locale/Gittyup/qtbase_zh_CN.qm
-- Installing: /<prefix>/./libQt5XcbQpa.so.5
-- Installing: /<prefix>/share/icons/hicolor/16x16/apps/Gittyup.png
-- Installing: /<prefix>/share/icons/hicolor/scalable/apps/Gittyup.svg
-- Installing: /<prefix>/share/licenses/Gittyup/LICENSE
-- Installing: /<prefix>/lib/cmake/zip/zipConfig.cmake
-- Installing: /<prefix>/lib/cmake/zip/zipConfigVersion.cmake
-- Installing: /<prefix>/lib/cmake/zip/zipTargets.cmake
-- Installing: /<prefix>/lib/cmake/zip/zipTargets-none.cmake
-- Installing: /<prefix>/lib/libzip.a
-- Installing: /<prefix>/include/zip/zip.h

【问题讨论】:

    标签: cmake


    【解决方案1】:

    是的,可以防止安装标头并为 libgit2 库设置新的前缀。您可以使用 CMake 选项 CMAKE_INSTALL_INCLUDEDIR 为标头指定不同的目录,并使用 CMAKE_INSTALL_PREFIX 为库文件指定不同的前缀。

    例如,要将头文件安装到名为 /lib/Gittyup/include 的目录,将库文件安装到 /lib/Gittyup/lib,您可以使用以下命令:

    cmake -DCMAKE_INSTALL_INCLUDEDIR=/lib/Gittyup/include -DCMAKE_INSTALL_PREFIX=/lib/Gittyup/lib <path_to_source>
    make install
    

    您还可以在 CMakeLists.txt 文件中指定这些选项,并在运行 CMake 时使用 cmake -D 选项指定这些选项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-30
      • 2017-01-14
      • 2021-10-23
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多