我需要压制"-arch x86_64 -arch i386"标志Waf传递给GCC.
我正在构建一个SDL/Opengl应用程序.如果我链接32位SDL运行时我得到错误
Undefined symbols for architecture i386:
"_SDL_Quit", referenced from:
__del_video in SDL_functions.c.2.o
__init_video in SDL_functions.c.2.o
Run Code Online (Sandbox Code Playgroud)
如果我链接到64位SDL运行时,我会收到错误"架构x86_64的未定义符号"
编译器显然使用标志
-arch x86_64 -arch i386
Run Code Online (Sandbox Code Playgroud)
据我所知,这会导致OSX上的GCC尝试编译这两种架构.我想编译为64位,或编译为32位.如何抑制一个架构的标志?
我们正在考虑将一个非常大的项目从使用GNU Make转换为更现代的构建工具.我目前的建议是使用SCons或Waf.
目前:
改进的潜在希望/收益是
SCons能否很好地完成这项任务?我已经看到它的评论没有缩放,也不像Waf.然而,这些已经有几年了.过去几年中,scons的表现有所增加吗?如果没有,与Waf相比,其表现不佳的原因是什么?
我们正在寻找适当的构建工具,用于在D(使用Qt工具包)中编写桌面GUI应用程序,该工具包由几个本地库组成,使用第三方C-lib.它必须建立在Linux(本机开发)和Mac以及Windows上.我们可能会将Code :: Blocks作为IDE.
Waf已经支持D语言,而CMake只是接收它cmaked2.
CMake使用特殊语言,而Waf是纯Python ... Otoh,CMake,通过CPack,可以生成多种格式的包以及用于例如Windoze的GUI安装程序.
任何利弊,你会用什么?
由于速度原因和autoconf,我们排除了Scons,因此,请仅针对CMake/waf提出建议.
更新:虽然这里没有收到任何回复,但我们正在其他地方进行研究,做了一些阅读和测试,并决定使用Waf(1.6.发布就在附近).
我想建立一个共享库.GNU/Linux是开发和目标平台.C是实现语言.
我无法决定如何设置构建系统并继续围绕三个选项,每个选项都有很多不喜欢的理由:
我无法决定去哪.我会选择一个,开始工作然后遇到问题,并决定其他系统更好.我卡住了卡住了.有人可以解释一下这可能有助于我解决这个问题吗?
我发现了类似的话题:Autotools,Cmake和Scons之间有什么区别?,但我的问题有点其他,我认为答案也可能是其他问题.
我发现很多文章都说waf是unstalbe(API更改),尚未准备好生产等(但所有这些文章都是2或3年).
如果我愿意,应该使用以下哪些构建工具:
阅读了很多文章,我发现了Cmake并且发现了"最好的"工具,但我没有使用它们,很难找到任何比较,这不是很偏颇(比如scons作者的比较)和不是很老.真的
我正在尝试修补一个waf问题,Windows命令提示输出在它应该是的时候没有着色.我正在试图找出如何实际实现这个补丁,但我找不到足够的资源 - 有人能指出我正确的方向吗?
请不要提出任何需要Cygwin的建议.
我想使用waf构建一个共享库,因为它看起来比GNU autotools更容易,更简洁.
到目前为止,我实际上有几个与我开始写的wscript有关的问题:
VERSION='0.0.1'
APPNAME='libmylib'
srcdir = '.'
blddir = 'build'
def set_options(opt):
opt.tool_options('compiler_cc')
pass
def configure(conf):
conf.check_tool('compiler_cc')
conf.env.append_value('CCFLAGS', '-std=gnu99 -Wall -pedantic -ggdb')
def build(bld):
bld.new_task_gen(
features = 'cc cshlib',
source = '*.c',
target='libmylib')
Run Code Online (Sandbox Code Playgroud)
包含的行source = '*.c'
不起作用.我必须指定每个.c文件而不是使用通配符吗?
我怎样才能启用调试版本(目前wscript正在使用调试版本CFLAGS,但我想让最终用户选择它).
计划将库源放在子目录中,以及在每个子目录中使用lib的程序.
我正在使用Eclipse/PyDev试图找到一种方法来调试subprocess.Popen
用于创建子进程的代码:我希望能够调试创建的子进程.问题是我无法找到一种调整跨进程边界的方法,我猜它实际上是不可能的.不过,在你问之前,你永远不会知道,所以我正在做!
一点背景:我有驱动的复杂的构建过程WAF它调用我们的单元测试通过调用出鼻子的要求:我要挂接到这些程序调试单元测试失败.我知道我可以尝试直接运行鼻子,但问题是我必须配置我们的模块正确加载的环境是相当复杂的,我不想复制代码,如果我可以避免它.
我知道远程调试模式,但这非常不方便,因为我必须在远程进程中手动调用调试器.如果有人知道如何做我正在尝试做的事情,那将非常感激.
Waf构建系统能为C/C++生成Visual Studio项目文件吗?
使用clang ++编译项目时,源文件的路径显然不包含在目标代码中.这意味着gdb无法找到显示代码的源文件.对于特定的实例,我可以使用gdb的directory
命令添加目录,但我的项目有很多源目录,这很快就会烦人.
当我将配置切换为使用g ++时,gdb只是查找我的所有源文件.
这个功能在Snow Leopard上使用了clang ++ 2.9,但在Lion上不适用于clang ++ 3.1.我有XCode 4.3.2.
是否有一个clang选项强制在目标文件中使用完整路径?我的配置可能还有其他问题吗?