Dendi Suhubdy
Dendi Suhubdy

Reputation: 3225

MongoDB example failure to compile with different flags

So I had a really strange compiler result after compiling the snippet provided by the MongoDB Quickstart (New Driver).

#include <iostream>

#include <bsoncxx/builder/stream/document.hpp>
#include <bsoncxx/json.hpp>

#include <mongocxx/client.hpp>
#include <mongocxx/instance.hpp>

int main(int, char**) {
    mongocxx::instance inst{};
    mongocxx::client conn{};

    bsoncxx::builder::stream::document document{};

    auto collection = conn["testdb"]["testcollection"];
    document << "hello" << "world";

    collection.insert_one(document.view());
    auto cursor = collection.find({});

    for (auto&& doc : cursor) {
        std::cout << bsoncxx::to_json(doc) << std::endl;
    }
}

The code compiles perfectly with

c++ --std=c++11 hellomongo.cpp -o hellomongo $(pkg-config --cflags --libs libmongocxx)

but failed to compile when I made a makefile and added some flags

CXX=g++
 FLAGS=-v -Wall --std=c++11 -I/usr/local/include
 EXENAME=matchingengine
 SOURCES=main.cpp
 OBJECTS=main.o

 all: $(EXENAME)

 $(EXENAME): $(OBJECTS)
     $(CXX) $(FLAGS) $(SOURCES) -o $(EXENAME)

 clean:
     rm *o $(EXENAME)

I keep getting

main.cpp:3:10: fatal error: 'bsoncxx/builder/stream/document.hpp' file not found

Where i have adjusted the -I include directory pointing to the place where bsoncxx is located. Please help me on this compiler issue.

Upvotes: 1

Views: 1081

Answers (1)

Dendi Suhubdy
Dendi Suhubdy

Reputation: 3225

I solved it

Makefile

    CXX=g++
 CFLAGS=-c --std=c++11 -Wall -I/usr/local/include/mongocxx/v0.3 -I/usr/local/include/libmongoc-1.0 -I/usr/local/include/bsoncxx/v0.3 -I/usr/local/include/libbson-1.0
 LDFLAGS=-L/usr/local/lib -lmongocxx -lbsoncxx
 SOURCES=main.cpp
 OBJECTS=main.o
 EXECUTABLE=matchingengine

 all: $(EXECUTABLE)

 $(EXECUTABLE): $(OBJECTS)
     $(CXX) $(OBJECTS) -o $(EXECUTABLE) $(LDFLAGS)

 $(OBJECTS): $(SOURCES)
     $(CXX) $(CFLAGS) -c $(SOURCES)

Upvotes: 1

Related Questions