2014-04-17 2 views
2

Я бегу QtCreator на Mac ... Я хочу, чтобы начать работать на библиотеки BOOST ... Итак, я установил библиотеки подталкивания с помощьюQt Creator на Mac и бустер библиотеки

brew install boost 

После этого я создал небольшой повысить Hallo всемирной программы и внесли изменения в файле .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, который для меня отлично работал с установкой для приготовления.

Конечно, мой путь на самом деле: /usr/local/Cellar/boost/1.55.0_2

0

Повышения библиотеки модульности, вам просто нужно связать с библиотеками, которые вы используете. В некоторых библиотеках есть 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

Неопределенных символов е или архитектуры x86_64: "повышение :: системы :: system_category()", ссылки из: ___cxx_global_var_init3 в main.o "повышение :: системы :: generic_category()", ссылки из: ___cxx_global_var_init1 в main.o ___cxx_global_var_init2 в main.o ld: символ (-ы) не найден для архитектуры x86_64 clang: ошибка: команда компоновщика не сработала с кодом выхода 1 (используйте -v для вызова вызова) make: *** [HalloWorld-Boost] Ошибка 1 20:11:47: Процесс «/ usr/bin/make» вышел с кодом 2. – Satya

+0

Я понял изменения, которые вы сделали, но я все еще получаю ошибки компиляции Adobe. – Satya

Смежные вопросы