J'essaie d'utiliser quelques frameworks avec Xcode 4.6.2. Les frameworks C++, tels que cppunit et boost qui sont censés être compilés et liés à mes projets échouent toujours avec "Undefined symbols for architecture x86_64[...]" ou i386 d'ailleurs lorsque j'essaie différents paramètres de compilation.
J'ai essayé de paramétrer le compilateur sur clang et g++ avec différents jeux de drapeaux d'architecture de processeur (64, 32 et 32_64). J'en suis arrivé à un point où je n'arrive pas à trouver de solution par moi-même.
J'ai également essayé les paquets de sécurité sans succès :
brew install cppunit universal
port install cppunit +universal (Egalement sans succès la bibliothèque Boost)
En outre, de nombreux essais sur Boost sont effectués. Bjam a vraiment fait beaucoup de travail ces dernières 24 heures. De multiples réglages ont été essayés :
http://www.codeproject.com/Tips/555070/Boost-vs-OSX-iOS-XCode
y http://boost.2283326.n4.nabble.com/Errors-compiling-Boost-Log-on-OS-X-tp4646151p4646299.html
Et plus encore par pur tâtonnement de ma part.
Ma question est donc la suivante : quelles sont les combinaisons de compilateur et d'éditeur de liens et les drapeaux respectifs que je dois utiliser pour que cela fonctionne dans mes projets Xcode ?
A la demande de Captain Obvlious, voici quelques erreurs lors de l'exécution d'une application avec Boost::Test :
Undefined symbols for architecture x86_64:
"boost::test_tools::tt_detail::check_impl(boost::test_tools::predicate_result const&, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long, ...)", referenced from:
my_test::test_method() in main.o
"boost::unit_test::unit_test_log_t::set_checkpoint(boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::basic_cstring<char const>)", referenced from:
my_test::test_method() in main.o
"boost::unit_test::framework::master_test_suite()", referenced from:
init_unit_test_suite(int, char**) in main.o
"boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&)", referenced from:
boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>) in main.o
"boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, unsigned long)", referenced from:
___cxx_global_var_init2 in main.o
"boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)", referenced from:
boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>) in main.o
"vtable for boost::unit_test::unit_test_log_t", referenced from:
boost::unit_test::unit_test_log_t::unit_test_log_t() in main.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)