使用 SCons 构建外部代码树

发布于 2024-08-28 08:14:45 字数 594 浏览 8 评论 0原文

我正在尝试使用 SCons 来构建一个软件,该软件依赖于系统中安装的源中可用的库。例如在 /usr/share/somewhere/src 中。该目录中的 *.cpp 应该内置到静态库中并与我自己的代码链接。库源中没有 SConscript

由于库位于系统目录中,我没有权限,也不想将构建工件放在 /usr 下的某个位置。当前工作目录中的 /tmp.build 即可。我怀疑这可以很容易地完成,但我被所有这些 SConscriptsVariantDirs 所困扰。

env = Environment()
my_things = env.SConscript('src/SConsctipt', variant_dir='.build/my_things')
sys_lib = env.SConscript(????)
result = env.Program('result', [my_things, sys_lib])

解决 SCons 问题的预期方法是什么?

I'm trying to use SCons for building a piece of software that depends on a library that is available in sources that are installed in system. For example in /usr/share/somewhere/src. *.cpp in that directory should be built into static library and linked with my own code. Library sources have no SConscript among them.

Since library is in system directory I have no rights and don't want to put build artefacts somewhere under /usr. /tmp or .build in current working directory is OK. I suspect this can be done easily but I've got entangled by all these SConscripts and VariantDirs.

env = Environment()
my_things = env.SConscript('src/SConsctipt', variant_dir='.build/my_things')
sys_lib = env.SConscript(????)
result = env.Program('result', [my_things, sys_lib])

What is intended way to solve the problem with SCons?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

〆凄凉。 2024-09-04 08:14:45

您可以使用 存储库 来做这个。例如,在 SConstruct 中,您可以编写:

sys_lib = env.SConscript("external.scons", variant_dir=".build/external")

然后在 external.scons 文件(位于源代码树中)中,添加外部源代码树的路径以及如何在其中构建库。

env = Environment()
env.Repository("/usr/share/somewhere/src")
lib = env.Library("library_name", Glob("*.cpp"))
Return("lib")

You could use a Repository to do this. For example, in your SConstruct you could write:

sys_lib = env.SConscript("external.scons", variant_dir=".build/external")

Then in the external.scons file (which is in your source tree), you add the path to the external source tree and how to build the library therein.

env = Environment()
env.Repository("/usr/share/somewhere/src")
lib = env.Library("library_name", Glob("*.cpp"))
Return("lib")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文