2014-04-17 142 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