+1 голос

Я написал код на c++ для raspberry pi , в котором задействованы библиотеки sfml и rf24.
Если для компиляции кода под rf24 нужны такие опции

 
g++ -Ofast -Wall RF24_scanner.cpp -lrf24 -o RF24_scanner

Так как присутствует опция -0fast , видно , что к коду с использованием библиотеки RF24 применена чуть ли не максимальная оптимизация.
А для sfml компиляция и трансляция проходит в два этапа:

g++ -c main.cpp
g++ main.o -o sfml-app -lsfml-graphics -lsfml-window -lsfml-system

В связи с этим вопрос : Как компилировать и собирать получившийся код?

Я пробовал разные варианты, так если подключать rf24 на втором этапе то компилятор будет ругаться на первом этапе, если подключать на первом этапе и на втором , то вроде не ругается, но программа запускается и сразу же закрывается. В один этап собрать вообще ни как. Слышал, что можно прописать все опции в фаиле make...

g++  -c  -Wall ${file} -lrf24
g++ ${name}.o -o ${name} -lsfml-graphics -lsfml-window -lsfml-system  -lrf24

С такими опциями компилируется, но ошибается вроде как на этапе инициализации nrf.

(2.4 тыс. баллов) 5 15 37

1 Ответ

+1 голос

В файле make действительно можно прописать все опции. Но у него довольно сложный синтаксис.

Поэтому существует cmake. Вы пишете все настройки в CMakeList.txt, а потом с помощью cmake генерируете make файл.

Далее с помощью make генерируется бинарный файл, который можно выполнить.

В зависимости от типа библиотек их подключение может быть разным. Если библиотека устанавливается, то в cmake файле достаточно написать строчку добавления библиотеки:

add_library(name_of_your_library)

Лично я дополнительно пишу bash скрипт, который сначала использует cmake, потом make, а затем запускает файл.

Более подробно про cmake написано в водной статье на хабре

(510 баллов) 2 11 19
Это не ответ на вопрос, а лишь коментарий о хорошей утилите, котрая может решить вашу проблему.
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. parovoZZ

    18 балл(ов)

  2. sser

    12 балл(ов)

  3. Тигрыч

    8 балл(ов)

  4. Un_ka

    8 балл(ов)

  5. artalex

    6 балл(ов)

  6. Vitalii_Mashinkin

    2 балл(ов)

Награды месяца
1-е место: Teensy 3.6
2-е место: Teensy 3.5
3-е место: Teensy 3.2

...