• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

BOOST w CLion na ubuntu 20.04

42 Warsaw Coding Academy
0 głosów
992 wizyt
pytanie zadane 7 lipca 2021 w C i C++ przez MOON0016 Obywatel (1,470 p.)

Witam!

Otóż chciałem programować na moim Ubuntu 20.04 w c++ w środowisku CLion z użyciem boosta. Jednak otrzymuje za każdym razem błąd mówiący, że nie można znaleźć boosta. Mój cmake wygląda tak:

cmake_minimum_required(VERSION 3.19)
project(projekt_testowy_1)

set(CMAKE_CXX_STANDARD 14)
set(BOOST_ROOT "/home/Programowanie/boost_1_76_0")

find_package(Boost 1.76.0)

if(NOT Boost_FOUND)
    message(FATAL_ERROR "Could not find boost!")
endif()

add_executable(projekt_testowy_1 main.cpp)

Otrzymuje komunikat:

-- Could NOT find Boost: Found unsuitable version "1.71.0", but required is at least "1.76.0" (found /usr/include, )
CMake Error at CMakeLists.txt:10 (message):
  Could not find boost!

Gdy zmieniam na find_package(Boost  1.71.0) to znów otrzymuje masę komunikatów "undefined reference to"

Ograniczenie znaków w poście nie pozwala mi wkleić logów z cmake

Boosta mam wypakowanego w folderze programowanie aby była do niego prostsza ścieżka (chce narazie aby w ogóle zaczęło to działać). Dodam jeszcze, że nie jestem jakoś biegły z linuxem oraz cmakami ponieważ dotychczas programowałem w codeblocks i qt gdzie tylko klikałem kompiluj i tyle. 

1 odpowiedź

+1 głos
odpowiedź 7 lipca 2021 przez adrian17 Mentor (353,220 p.)
wybrane 11 lipca 2021 przez MOON0016
 
Najlepsza

Gdy zmieniam na find_package(Boost  1.71.0) to znów otrzymuje masę komunikatów "undefined reference to"

No tak, bo samo find_package tylko znajduje boosta, ale nie dodaje go do builda. Brakuje target_link_libraries, przykład z dokumentacji:

find_package(Boost 1.56 REQUIRED COMPONENTS
             date_time filesystem iostreams)
add_executable(foo foo.cc)
target_link_libraries(foo Boost::date_time Boost::filesystem
                          Boost::iostreams)

https://cmake.org/cmake/help/latest/module/FindBoost.html#examples

komentarz 11 lipca 2021 przez j23 Mędrzec (195,240 p.)

@adrian17, Dlaczego odradzane, skoro find_package dobierze odpowiednie biblioteki dla wymienionych paczek?

komentarz 11 lipca 2021 przez adrian17 Mentor (353,220 p.)

Moon, może prostsza biblioteka, jak Catch(2)?

https://github.com/catchorg/Catch2

Dokumentacja ma też przykłady: https://github.com/catchorg/Catch2/blob/devel/docs/cmake-integration.md

Choć z boostem też byłeś blisko, musisz po prostu poprawić błędy które wymieniłem.

największe problemy są w ogóle z tym, żeby zacząć

Bo ciągle robisz dziwne losowe rzeczy :/ To nie jest dobre podejście do programowania, jak jest tyle źródeł dookoła.

j23, a to jest właśnie dobry przykład: nie, X_LIBRARIES to jest tylko lista linkowalnych plików bibliotek, a nie targetów cmake. Więc np biblioteka Catch w ogóle nie zadziała, bo w ogóle nie ma niczego linkowalnego; Ale jak przekażę target `Catch2::Catch2`, to cmake sam ogarnie jakie powinny być include'y i biblioteki do zlinkowania.

1
komentarz 11 lipca 2021 przez j23 Mędrzec (195,240 p.)

@MOON0016, daj unit_test_framework zamiast unit_test.

komentarz 11 lipca 2021 przez MOON0016 Obywatel (1,470 p.)
Dziękuje, z dodaniem framework już działa.

Właśnie chciałem typowo z boosta ponieważ w pracy o którą docelowo chcę się starać wymagane są unit testy z boosta dlatego chciałbym się tego nauczyć. Dziękuję też za te linki do Catch, przejże je i będę się z czegoś uczył bo wiem że w tym momencie to grzebałem na ślepo jak kijem w mrowisku
komentarz 11 lipca 2021 przez adrian17 Mentor (353,220 p.)

z dodaniem framework już działa.

Musisz jeszcze dodać enable_testing() i add_test() żeby dało się odpalać testy przez cmake'owe `ctest`.

Podobne pytania

0 głosów
1 odpowiedź 1,278 wizyt
0 głosów
1 odpowiedź 933 wizyt
0 głosów
0 odpowiedzi 515 wizyt
pytanie zadane 14 grudnia 2020 w Systemy operacyjne, programy przez Maciow Nowicjusz (120 p.)

93,377 zapytań

142,379 odpowiedzi

322,526 komentarzy

62,724 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...