在CMake交叉构建项目中设置路径的位置/方式 我有一个C++项目,它生成一个主二进制和几个支持二进制文件和库(DLLS/SOS)。另外还有一些附加数据(资产、文本文件…)

在CMake交叉构建项目中设置路径的位置/方式 我有一个C++项目,它生成一个主二进制和几个支持二进制文件和库(DLLS/SOS)。另外还有一些附加数据(资产、文本文件…),c++,path,cmake,cross-platform,C++,Path,Cmake,Cross Platform,目前有一种粗糙的方法,使用CMake和Shell脚本的混合来安装所有这些脚本,这对于包系统来说尤其糟糕。 我们(开源项目)想要的是 基本安装到/usr/local(bin、share等) 安装到一个目录中(特别是windows或nightlies) 问题:程序如何知道它安装在哪里/如何安装?目前,路径在CMake(*\u BINDIR、*\u DATA、*\u GAMEDIR)中设置,并按定义传递给程序。对于案例2。对于情况1,使用“.”的基本路径(如编译程序的分布式版本所需)。路径是绝对的 但

目前有一种粗糙的方法,使用CMake和Shell脚本的混合来安装所有这些脚本,这对于包系统来说尤其糟糕。 我们(开源项目)想要的是

  • 基本安装到/usr/local(bin、share等)
  • 安装到一个目录中(特别是windows或nightlies)
  • 问题:程序如何知道它安装在哪里/如何安装?目前,路径在CMake(*\u BINDIR、*\u DATA、*\u GAMEDIR)中设置,并按定义传递给程序。对于案例2。对于情况1,使用“.”的基本路径(如编译程序的分布式版本所需)。路径是绝对的

    但是其他项目如何解决这个问题呢?他们只是使用相对路径(到CMAKE\u INSTALL\u前缀)并将CMAKE\u INSTALL\u前缀设置为“.”或“/”?DESTDIR呢


    因此,基本上:如何正确设置路径并让编译程序知道它们,而不破坏分发编译程序的能力?

    DESTDIR与您的问题无关,请参阅<代码>程序如何知道它安装在何处/如何安装?-
    CMakeLists.txt
    可以从中推断目标类型。然后您可以使用生成头文件。链接的问题确实有助于DESTDIR。其他的事情已经这样做了。问题是:如何指定路径,其他人如何指定路径(或者是否有正确的方法)?是否可以只使用CMAKE_INSTALL_前缀,使所有内容都与之相关,并将CMAKE_INSTALL_前缀存储在(已配置的)定义中?DESTDIR与您的问题无关,请参阅<代码>程序如何知道它安装在何处/如何安装?-
    CMakeLists.txt
    可以从中推断目标类型。然后您可以使用生成头文件。链接的问题确实有助于DESTDIR。其他的事情已经这样做了。问题是:如何指定路径,其他人如何指定路径(或者是否有正确的方法)?是否可以只使用CMAKE_INSTALL_前缀,使所有相关内容都与之相关,并将CMAKE_INSTALL_前缀存储在(配置的)define中?