Ответы пользователя по тегу CMake
  • Как исправить "неопределённая ссылка на «http::server::server::run()"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Взял первый пример HTTP сервера на официальном сайте Boost
    add_executable(main main.cpp)

    В "первом примере HTTP сервера" по твоей ссылочке файлов-то существенно больше, не один только main.cpp. Ты бы их добавил как-нибудь в список исходников, а то немного странно получается, ты не находишь? Глядишь среди них где-то найдётся и исходник определяющий http::server::server::server.
    Ответ написан
    3 комментария
  • Компиляция C++ кода на Ubuntu и Windows даёт мне разный результат, почему?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Уже не знаю что делать

    Не знаешь что делать -- включай санитайзеры:
    $ g++ -std=c++11 -g -fsanitize=undefined -fsanitize=address main.cc tools.cc -o test
    $ ./test
    ==3245365==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x606000000060 at pc 0x55b559719b47 bp 0x7ffcc39300a0 sp 0x7ffcc3930098
    READ of size 8 at 0x606000000060 thread T0
        #0 0x55b559719b46 in Processor::encode(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) toster/1320980/main.cc:41


    mainc.cc:41 это std::bitset<16> KR = K_array[i];, цикл по i идёт до 9, а в массиве K_array 8 элементов.
    Ответ написан
  • C++ CMake Как исправить ошибку?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не могу понять в чем дело

    Судя по всему в макросе assert использован текст с какими-то забавными символами. Два очевидных способа решения:
    - можно эти строки удалить, в корректно написанной программе они ни на что не влияют.
    - можно разобраться с тем, что не так внутри assert. Начать можно, например, выполнив вместо компиляции препроцессирование (заменив в командной строке вызова gcc -c на -E) и почитав внимательно препроцессированный код в местах на которые ругается компилятор.
    Ответ написан
    Комментировать
  • Почему SFML не линкуется к проекту?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Собрал SFML из исходников…
    main.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (__imp_??0VideoMode@sf@@QEAA@III@Z) referenced in function main
    main.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: bool __cdecl sf::WindowBase::isOpen(void)const " (__imp_?isOpen@WindowBase@sf@@QEBA_NXZ) referenced in function main
    main.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: bool __cdecl sf::WindowBase::pollEvent(class sf::Event &)" (__imp_?pollEvent@WindowBase@sf@@QEAA_NAEAVEvent@2@@Z) referenced in function main
    main.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl sf::Window::Window(class sf::VideoMode,class sf::String const &,unsigned int,struct sf::ContextSettings const &)" (__imp_??0Window@sf@@QEAA@VVideoMode@1@AEBVString@1@IAEBUContextSettings@1@@Z) referenced in function main
    main.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl sf::Window::~Window(void)" (__imp_??1Window@sf@@UEAA@XZ) referenced in function main
    main.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual void __cdecl sf::Window::close(void)" (__imp_?close@Window@sf@@UEAAXXZ) referenced in function main

    В моей версии sfml эти символы определены в библиотеке sfml-window, которой у вас нет.
    Ответ написан
  • Как собрать приложение на языке программирования C++, используя CMake?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как мне организовать систему сборки, чтобы любой пользователь мог запустить приложения, имея .exe файл и папку data ( aka DATA_DIR )

    Для этого нужно научить приложение находить папку data. Сейчас ты, похоже, используешь полный путь из DATA_DIR. Возможно ты хочешь искать data относительно положения исполняемого файла. Это должно быть в логике приложения, я не вижу, как тебе может помочь система сборки, если пользователи не будут пересобирать приложение.
    Ответ написан
    4 комментария
  • Ошибка undefined reference to `pthread_create'. Как исправить?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    make -j1 -lpthread

    - вместо -lpthread лучше писать -pthread
    - опцию -pthread нужно передавать не make а gcc
    Ответ написан
    8 комментариев
  • Как включить в статическую библиотеку все зависимости из других стат.библиотек в CMake проекте?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Проект создаёт статическую библиотеку mylib, но в неё не включена требуемая реализация boost, то есть при линковке приложения с mylib нужно явно указывать, что нужно линковать boost.

    Так обычно библиотеки и делают -- ни одна нормальная библиотека не тащит с собой часть другой.
    А вот для того, чтобы указать, что у библиотеки есть зависимости используют pkg-config. Такая библиотека устанавливает в системе свой архив (*.a), свои заголовочные файлы (*.h) и описание для pkg-config (*.pc). Пользователь библиотеки вызывает pkg-config --libs <имя библиотеки>и получает список ключей для линковки.
    Ответ написан
    Комментировать
  • Как указать версию динамической библиотеки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В linux есть два варианта версионирования:
    - версионирование разделяемых библиотек (см. раз, два), позволяющее одновременно устанавливать и использовать несколько версий одной и той же библиотеки
    - версионирование символов (см. раз, два), позволяющее одной разделяемой библиотеке экспортировать несколько версий одного символа, с разным содержанием/поведением.
    Ответ написан
    Комментировать