如何让 SCons StaticLibrary 将库文件存储在另一个文件夹中

问题描述

我正在将 scons 用于构建项目。我想从驻留在不同目录的目标文件中创建一个静态库,但令人惊讶的是我无法做到这一点。这是我正在使用的代码片段:

OBJECT_FILES = env.Object('main.o','main.cpp')
env.StaticLibrary("../mylib",OBJECT_FILES)

如果我将任何目录放在此目录之上,即使我使用绝对路径,StaticLibrary 也不起作用。对于当前目录或当前目录下的任何其他目录,这没有问题。

解决方法

这就是我要这样做的方法..

env.StaticLibrary("../${LIBPREFIX}mylib${LIBSUFFIX}",'main.cpp')

无需明确请求 env.Object() SCons 会在这里找出正确的做法。除非出于某种原因,您以后想对该 Object() 的列表执行某些操作。

当您指定时

env.StaticLibrary("mylib",['main.cpp'])

SCons 将自动添加 $LIBPREFIX 并将 $LIBSUFFIX 附加到 mylib 并且在 POSIX 系统上你会得到 libmylib.a 在 Windows 上你会得到 { {1}} 请考虑加入 SCons discord server 以获得更多“实时”帮助和讨论。