AnilJ
AnilJ

Reputation: 2121

How to add depdency in waf builder's wscript script

In my project (which uses waf/wscript based build system), I am now adding mongodb c++ driver APIs. I figured out that 'libmongoclient.a' is not getting added as a linker option (at compile time) and I get all undefined reference to the mongodb c++ driver API calls.

I want to understand, how do I modify my wscript so that it picks up the mongoclient related library by itself and links it properly. It perhaps involves updating the configuration function of wscript. I am new to the waf build system, and not sure how to change it.

I have built and installed the mongodb c++ driver as follows:
- INCLUDE: /usr/local/include/mongo/
- LIB:     /usr/local/lib/libmongoclient.a

I posted a similar question earlier in this regard, and the above one is more specific problem statement. https://stackoverflow.com/questions/30020574/building-project-with-waf-script-and-eclipse

Since I am just invoking ./waf from within eclipse, I believe, the options that I specify into Eclipse's build environment are not being picked up by the waf (and hence the library option for mongoclient).

Upvotes: 0

Views: 449

Answers (1)

AnilJ
AnilJ

Reputation: 2121

I figured this out and the steps are as follows:

  1. Added following check in the configure command/function.

    conf.check_cfg(package='libmongoclient', args=['--cflags', '--libs'], uselib_store='MONGOCLIENT', mandatory=True)

  2. After this step, we need to add a package configuration file (.pc) into /usr/local/lib/pkgconfig path. This is the file where we specify the paths to lib and headers. Pasting the content of this file below.

    prefix=/usr/local libdir=/usr/local/lib includedir=/usr/local/include/mongo

    Name: libmongoclient Description: Mongodb C++ driver Version: 0.2 Libs: -L${libdir} -lmongoclient Cflags: -I${includedir}

  3. Added the above library into the build function to the sepcific program which depends on the above dependency (i.e. MongoClient).

    mobility = bld( target='bin/mobility', features='cxx cxxprogram', source='src/main.cpp', use='mob-objects MONGOCLIENT', )

Upvotes: 0

Related Questions