良好实践:如何定义外部库的编译路径

Good Practice: How to define path to external libraries for compilation

我不太习惯编译和构建项目,如果我的编译和构建方法看起来有点奇怪,请原谅我。欢迎任何提示。

我目前正在研究 3D 几何 C++ 项目(这是一个 dll)。该项目使用外部 dll,例如 BOOST。所以在构建项目时我必须定义.dll、.lib和.h/.hpp文件所在的目录。

目前我正在使用 scons 构建项目并直接在 SConstruct 文件中定义这些路径。

然而,这些路径稍后会被其他构建操作重用。(在本例中,在 MEX 中为 matlab 编译 C++ 代码,但这不是这里的重点)。

因此我目前必须在不同的地方定义相同的路径,这是低效的。此外,该项目必须易于为其他用户设置。因此,我想避免必须更改和更新许多不同文件中的路径。

从我的立场来看,我看到两种选择:

所以我的问题如下: 是否有更好的方法或良好做法让用户输入编译所需的路径满足以下条件:

  1. 是否让用户每条路径只输入一次
  2. 通过文件或其他方式在项目文件夹中完成
  3. 尽可能万无一失
  4. 不需要太多额外的东西 download/installing(我真的不想让用户为此安装一个全新的软件。但是我可以接受像简单的 light .exe 这样的东西,我可以添加到我的项目文件中)

SCons 的变量可能是您的最佳选择。

参见:https://scons.org/doc/production/HTML/scons-user.html#sect-command-line-variables

它允许从文件中读取默认值:

vars = Variables('custom.py')

您必须设计一些逻辑来保存在命令行上指定的任何变量。