带有 msys 的 windows 上的 scons LIBPATH

Posted

技术标签:

【中文标题】带有 msys 的 windows 上的 scons LIBPATH【英文标题】:scons LIBPATH on windows with msys 【发布时间】:2010-03-04 13:25:34 【问题描述】:

我正在使用 LLVM 开发一个 C++ 项目,我想用 scons 替换 LLVM 构建系统(它使用 autoconf 和 make)。不幸的是,我现在遇到了一个大问题。我希望我的项目能够在 Linux 和 Windows 上编译。为了在 Windows 上编译,我使用了 mingw/msys,它与 autoconf/make 系统完美配合。

但是 scons 修改了我的库路径并在其前面加上驱动器号,即当我指定 /usr/local/lib 时,传递给链接器的实际参数是 -LD:\usr\local\lib,它显然不包含我所需的库。我正在通过以下方式设置库路径:

env = Environment(LIBPATH = ['/usr/local/lib', 'build/lib/sample'])

另外env['LIBPATH'] 仍然包含正确的路径。

有什么办法可以防止 scons 弄乱那条路径吗?

谢谢

【问题讨论】:

【参考方案1】:

我想通了:

env = Environment(LIBPATH = ['/usr/local/lib'], platform = 'posix')

强制 scons 为不会混淆路径的 posix 平台初始化环境。不幸的是,它无法找到 gcc。但这可以通过显式传播外部环境轻松解决

env = Environment(LIBPATH = ['/usr/local/lib'], platform = 'posix', ENV = os.environ)

【讨论】:

也许我说得太早了。虽然它似乎工作 scons 现在正在到处打印 os.environ 字典,这是不可接受的。仅传播 PATH 不起作用,即找不到 gcc。此外,尽管 CheckLib 确实成功了 config.log 仍然显示链接器是用驱动器号前缀调用的......wtf?这让我发疯了...也许我应该继续使用 autoconf 并让 sigh

以上是关于带有 msys 的 windows 上的 scons LIBPATH的主要内容,如果未能解决你的问题,请参考以下文章

带有 GTK 的 Windows 10 中的 Msys2 返回错误 pkg-config

如何在 Windows 7+ 和 MSYS2 上的 GTK3 上获取本机 Windows 装饰

Scons - 使用带有 scons 缓存的自定义预处理器

MSYS2 上的 CMake 冻结

Msys 编译 C 代码

如何在没有 MSYS2 的 Windows 上构建 GTK+3 程序?