我相当不习惯编译和构建项目,所以如果我的编译和构建方法看起来有点奇怪,请原谅我。欢迎任何提示。
我目前正在从事一个 3D 几何C++项目(这是一个 dll(。此项目使用外部 dll,例如 BOOST。因此,在构建项目时,我必须定义.dll,.lib和.h/.hpp文件所在的目录。
目前,我正在使用 scons 来构建项目并直接在 SConstruct 文件中定义这些路径。
但是,这些路径稍后会重用于其他生成操作。(在本例中,在 MEX 中为 matlab 编译C++代码,但这不是这里的重点(。
因此,我目前必须在不同的地方定义相同的路径,这是低效的。此外,该项目必须易于为其他用户设置。因此,我想避免更改和更新许多不同文件中的路径。
从我的立场来看,我看到了两种选择:
-
首先,我可以要求用户定义环境变量并从我的各种构建脚本中读取它们。但是,我对这个解决方案并不满意,因为它要求用户进行额外的操作,据我所知,我失去了 scons 提供的跨平台可移植性。(我知道这可能仍然可行,但需要一些额外的步骤,我想让事情尽可能简单(
-
其次,我可以在项目根目录下的单个.txt(或类似(文件中定义我的所有路径,并从我的各种构建脚本中读取它。但是,这使得该过程对拼写错误和解析错误敏感,这并不符合我的口味。
所以我的问题如下:是否有更好的方法或良好做法让用户输入满足以下条件的编译所需的路径:
- 让用户在每个路径上只输入一次
- 在项目文件夹中通过文件或其他内容完成
- 尽可能万无一失
- 不需要太多额外的下载/安装(我真的不想让用户为此安装全新的软件。但是,我可以在项目文件中添加一个简单的轻.exe之类的东西(
SCons的变量可能是你最好的选择。
请参阅:https://scons.org/doc/production/HTML/scons-user.html#sect-command-line-variables
它允许从文件中读取默认值:
vars = Variables('custom.py')
您必须制作一些逻辑来保存命令行上指定的任何变量。