[Scons-dev] Checking for a library or header and fail

Florian Lindner mailinglists at xgm.de
Thu Aug 25 05:07:41 EDT 2016


Hello,

in almost all of my scons projects, I have a piece of code like that one:

def uniqueCheckLib(conf, lib, header = None):
    if header:
        if not conf.CheckLibWithHeader(lib, header = header, autoadd=0, language="C++"):
            print "ERROR: Library '" + lib + "' or header '" + header + "' not found."
            Exit(1)
    else:
        if not conf.CheckLib(lib, autoadd=0, language="C++"):
            print "ERROR: Library '" + lib + "' not found!"
            Exit(1)

    conf.env.AppendUnique(LIBS = [lib])

This is needed because of some shortcommings of CheckLib / CheckLibWithHeader.

1) CheckLib adds the library to LIBS, even if it is already present. That can cause problem. What is the use case for that?

2) In almost all cases, if a library is not found, I want the build to terminate. CheckLib should (optionally) print a nice error message and aborts the build, if the check fails.

Why not having a function:

AssureLibOrHeader(context, 
  library = None,
  header = None,
  [...])

If tests for library and the header, if given. If the check fails, it prints a nice error messages and fails.

Another idea what be to enhance the existings checks with a flag, abortOnFail, which prints an error messages and exists.

If such a change would have any chance of inclusion, I would try to implement it into scons.

What do you think? Are there alternatives I overlooked?

Florian
  



More information about the Scons-dev mailing list