【问题标题】:How to make scons append a forward slash '/' in the libpath如何使 scons 在 libpath 中附加正斜杠“/”
【发布时间】:2016-04-21 13:13:54
【问题描述】:

在与 SCons 合作时,我一直在努力解决我曾经处理过的最轻微的问题,但这种琐碎的事情似乎并没有像问题本身那样容易消失。

情况就是这样。

当我在 XCode 的一个系统库中的 libpath 末尾附加一个正斜杠时,我有一个可以完美编译的项目。

当我将它提供给 SCons 时,它会以某种方式去除斜线并调用 g++ -out 而没有斜线。

当我手动使用它通过斜杠调用的 g++ 命令时,它可以工作。

以下是代码sn-ps,帮助大家理解。

这是附加库的代码:

env.AppendUnique(LIBPATH = [r'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/usr/lib/system/'])

如您所见,'usr/lib/system' 后面有一个斜杠。

这是 SCons 调用的 g++ 命令:

g++ -o output.dylib stuff.os -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/usr/lib/system -otherstuff...

正如你所看到的,斜线在最后被绊倒了。

如果我这样做:

g++ -o output.dylib stuff.os -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.3.sdk/usr/lib/system/ -otherstuff...

一切都很完美。

关于如何解决这个愚蠢的新手的愚蠢问题的任何想法?

提前感谢你们!

【问题讨论】:

  • 这个可能与stackoverflow.com/questions/4403253/…有关。
  • @dirkbaechle 我不知道如何在 XCode 7.3 中添加 Unix 开发支持
  • 给定的链接解释了如何做到这一点。您尝试了哪些步骤,遇到了什么样的错误消息?如果您能回答这两个问题,请在遇到您似乎无法克服的新问题时使用它们打开一个关于 SO 的新问题,经过认真尝试......我不是 MAC 用户,所以我无能为力我猜你再出去。
  • @dirkbaechle 给定的链接是在谈论 XCode 4.3,它具有真正不同的配置。我确实尝试过,但我也不是 Mac 用户,所以在谴责我没有尝试之前,也许你应该对你知道的事情发表评论。不幸的是,您的回答没有帮助,因为我的问题是关于斜杠,而不是 XCode 版本,但感谢您的尝试。
  • 您应该在此问题中添加有关您尝试解决此问题的内容的更新,而不是打开副本。我认为@dirkbaechle 建议如果您遇到与发布的问题有很大不同的问题,请打开一个新问题。

标签: python c++ macos g++ scons


【解决方案1】:

正如您所注意到的,SCons 在构建链接命令时会对库路径进行一些解释。您可以通过直接通过 LINKFLAGS 环境变量为链接命令提供标志来解决此问题,绕过 LIBPATH 导致问题的路径。

这会使您的 SConstruct 的可移植性有所降低,因为您必须自己指定命令行选项。

S构造:

# SConstruct
libdir1 = '/Users/dave/lib1/'
libdir2 = '/Users/dave/lib2/'
env = Environment(LIBPATH = libdir1, LINKFLAGS = ['-L' + libdir2])
program = env.Program('test', 'test.c')

生成以下输出:

$ scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o test.o -c test.c
gcc -o test -L/Users/dave/lib2/ test.o -L/Users/dave/lib1
scons: done building targets.

请注意,lib2 上的尾随空格被保留。

我不清楚为什么会发生此错误,根本原因值得进一步调查。

【讨论】:

  • 你知道吗?几分钟前我才发现,我也不知道为什么会这样!但是,是的,非常感谢您的回复。它让我再次确认,我不是唯一一个遇到这个问题并不得不破解他们的方式的人。
猜你喜欢
  • 2011-01-04
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 2014-07-18
  • 2011-12-22
  • 1970-01-01
相关资源
最近更新 更多