2015-07-01 36 views
1

因此,在編譯MongoDB快速入門(新驅動程序)提供的代碼片段之後,我得到了一個非常奇怪的編譯結果。MongoDB示例未能使用不同標誌進行編譯

#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; 
    } 
} 

代碼完全編譯與

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

但未能編譯的時候我犯了一個生成文件,並添加一些標誌

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) 

我不斷收到

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

在哪裏我調整了 - 我包含指向bsoncxx所在位置的目錄。請幫我解決這個編譯器問題。

回答

1

我解決了它

的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) 
+0

高興地看到,你得到它的工作 – acm

+0

後4小時:) –

+0

FYI你應該仍然在你的makefile使用pkgconfig。這是獲取庫所需標誌的首選方法。我們感謝您嘗試新的C++驅動程序預發行版。請隨時通過https://jira.mongodb.org/browse/CXX – acm