scons - 如何解决 CheckLib 返回 false 的问题?

标签 scons

Scons 版本是 2.3.3。这是构建脚本的相关部分:

if not conf.CheckLib('portaudio'):
    raise Exception(
        'Did not find libportaudio.a, portaudio.lib, or the PortAudio-v19 development header files.')

CheckLib 总是返回一个假值。我该如何调试?我通过 Scons 源代码跟踪它,直到它尝试构建一个小型测试程序,但后来我无法进一步跟踪它。

我尝试了 section 27 of the Scons manual 中建议的所有故障排除标志但它们都没有产生任何额外的输出。例如,
C:\code\github\mixxx2>scons -Q --debug=findlibs winlib=%WINLIB_PATH% qtdir=%WINL
IB_PATH%\build\qt-everywhere-opensource-src-4.8.6 hss1394=1 mediafoundation=1 op
us=0 build=%BUILD_TYPE% machine=%TARGET_MACHINE% toolchain=msvs virtualize=0 tes
t=1 sqlitedll=0 mssdk_dir=%MSSDK_DIR% force32=1

我不知道是什么-Q选项是为了。我试过省略它,但没有任何区别;我没有得到关于标准输出的额外信息。只是这个:
[...truncated...]
Checking for C library portaudio... no
ERROR:root:Unmet dependency: Did not find libportaudio.a, portaudio.lib, or the
PortAudio-v19 development header files.

最佳答案

Configure 对象在执行其操作时生成一个日志文件,默认情况下该文件是 config.log。根据Configure Contexts scons 手册页的部分,日志文件可以在 Configure 时自定义通过传递 log_file 初始化对象争论。

通过一个简单的 SConstruct,我得到了一个构建失败的 config.log 文件。

S构造:

env = Environment()
conf = Configure(env)    
if not conf.CheckLib('foo'):
    Exit('Can not find foo')

配置日志:
file /home/dbacher/Code/scons-test/SConstruct,line 2:
        Configure(confdir = .sconf_temp)
scons: Configure: Checking for C library foo... 
.sconf_temp/conftest_0.c <-
  |
  |
  |
  |int
  |main() {
  |  
  |return 0;
  |}
  |
gcc -o .sconf_temp/conftest_0.o -c .sconf_temp/conftest_0.c
gcc -o .sconf_temp/conftest_0 .sconf_temp/conftest_0.o -lfoo
/usr/bin/ld: cannot find -lfoo
collect2: ld returned 1 exit status
scons: Configure: no

我猜这个日志文件足以让您诊断问题。

顺便说一句,scons 手册描述了 -Q选项为:

Quiets SCons status messages about reading SConscript files, building targets and entering directories. Commands that are executed to rebuild target files are still printed.

关于scons - 如何解决 CheckLib 返回 false 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595410/

相关文章:

Scons:仅当目标发生更改时才生成版本文件

svn - scons 支持 subversion checkout 吗?

compilation - 如何在Windows上的SCons中导出具有备用扩展名的程序

python - 如何使用 eclipse 和 pydev 调试 SCons 脚本?

scons - 用SCons实现 'install'目标

c++ - 为什么 fltk-config 的输出会截断 gcc 的参数?

python - 为什么 SCons VariantDir() 不将输出放在给定目录中?

scons:覆盖一个文件的构建选项

linux - Scons 在 gpsd 中发现无效语法

build - scons 喊 "no such attribute as Library"!