2014-04-17 140 views
2

我在Mac上運行QtCreator ......我要開始升壓圖書館合作......所以,我安裝使用Qt Creator的Mac和Boost庫

brew install boost 

Boost庫之後,我創建了一個小提高喂世界計劃並提出在pro文件變動情況如下

TEMPLATE = app 
CONFIG += console 
CONFIG -= app_bundle 
CONFIG -= qt 

unix:INCLUDEPATH += "/usr/local/Cellar/boost/1.55.0_1/include/" 
unix:LIBPATH += "-L/usr/local/Cellar/boost/1.55.0_1/lib/" 

SOURCES += main.cpp 

LIBS += \ 
-lboost_date_time \ 
-lboost_filesystem \ 
-lboost_program_options \ 
-lboost_regex \ 
-lboost_signals \ 
-lboost_system 

我仍然無法建立......這可能是什麼原因?請建議我可能是什麼可能的錯誤...

的錯誤是

library not found for -lboost_data_time 
linker command failed with exit code 1 (use -v to see invocation) 
+0

什麼是錯誤訊息?你需要先運行qmake的,然後才能與修改後的.pro建設。 –

+0

:-1:錯誤:庫找不到-lboost_regex – Satya

+0

您需要編譯boost的二進制文件(或仔細檢查您需要的文件是否存在) –

回答

5

這是從UFLEX的回答服用了一下,因爲他錯過了一些東西。 因此,保持相同的代碼:

//make sure that there is a boost folder in your boost include directory 
#include <boost/chrono.hpp> 
#include <cmath> 

int main() 
{ 
auto start = boost::chrono::system_clock::now(); 

    for (long i = 0; i < 10000000; ++i) 
     std::sqrt(123.456L); // burn some time 

    auto sec = boost::chrono::system_clock::now() - start; 
    std::cout << "took " << sec.count() << " seconds" << std::endl; 

    return 0; 
} 

但是讓我們改變了他的.pro了一下:

TEMPLATE = app 
CONFIG += console 
CONFIG -= app_bundle 
CONFIG -= qt 

SOURCES += main.cpp 

macx { 
    QMAKE_CXXFLAGS += -std=c++11 

    _BOOST_PATH = /usr/local/Cellar/boost/1.55.0_1 
    INCLUDEPATH += "$${_BOOST_PATH}/include/" 
    LIBS += -L$${_BOOST_PATH}/lib 
    ## Use only one of these: 
    LIBS += -lboost_chrono-mt -lboost_system # using dynamic lib (not sure if you need that "-mt" at the end or not) 
    #LIBS += $${_BOOST_PATH}/lib/libboost_chrono-mt.a # using static lib 
} 

我已經加入到這個唯一的辦法就是增壓系統(-lboost_system) 這應該解決原始版本導致未定義符號的問題,並允許您添加其他庫。

例如-lboost_date_time,這對我來說可以很好地完成brew安裝。

當然,我的道路居然是:/usr/local/Cellar/boost/1.55​​.0_2

0

Boost庫是模塊化的,你只需要對你所使用的庫鏈接。一些圖書館是header only,所以你不需要做任何事情,在你的路徑上獲得提升可以達到足夠的效果。

你可以嘗試進行編譯:

//make sure that there is a boost folder in your boost include directory 
#include <boost/chrono.hpp> 
#include <cmath> 

int main() 
{ 
    auto start = boost::chrono::system_clock::now(); 

    for (long i = 0; i < 10000000; ++i) 
     std::sqrt(123.456L); // burn some time 

    auto sec = boost::chrono::system_clock::now() - start; 
    std::cout << "took " << sec.count() << " seconds" << std::endl; 

    return 0; 
} 

而在.pro文件:

TEMPLATE = app 
CONFIG += console 
CONFIG -= app_bundle 
CONFIG -= qt 

SOURCES += main.cpp 

macx { 
    QMAKE_CXXFLAGS += -std=c++11 

    _BOOST_PATH = /usr/local/Cellar/boost/1.55.0_1 
    INCLUDEPATH += "$${_BOOST_PATH}/include/" 
    LIBS += -L$${_BOOST_PATH}/lib 
    ## Use only one of these: 
    LIBS += -lboost_chrono-mt # using dynamic lib (not sure if you need that "-mt" at the end or not) 
    #LIBS += $${_BOOST_PATH}/lib/libboost_chrono-mt.a # using static lib 
} 
+0

未定義,符號f或體系結構x86_64的: 「助推::系統:: system_category()」,從引用:在main.o中 ___cxx_global_var_init3 「助推::系統:: generic_category()」,從引用:在main.o中 ___cxx_global_var_init2 ___cxx_global_var_init1在main.o中 ld:找不到x86_64體系結構的符號 clang:error:連接器命令失敗,退出代碼1(使用-v查看調用) make:*** [HalloWorld-Boost]錯誤1 20:11:47:使用代碼2退出進程「/ usr/bin/make」。 – Satya

+0

我的確瞭解了所做的更改,但仍然遇到了Adobe編譯錯誤。 – Satya