C++ — линковка статических библиотек на linux в CMake

157
08 декабря 2019, 19:30

На Windows в Visual Studio было достаточно раскидать файлы по специальным папкам и прописать:

#include <GL/glut.h>
#pragma comment (lib, "opengl32.lib")
#pragma comment (lib, "glu32.lib")
#pragma comment (lib, "glut32.lib")

Как же быть на линуксе? Вот из этого ответа я понял, что #pragma comment не сработает. Еще я понял, что в CMakeLists.txt надо все линковки самому прописывать. Я поставил freeglut3-dev и что откуда мне линковать?
Вот мой CMakeLists.txt:

cmake_minimum_required(VERSION 3.8)
project(paintc)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
file(GLOB SOURCES "*.cpp" "*.h")
add_executable(paintc ${SOURCES})
Answer 1

Все оказалось намного интереснее. Оказывается, при компиляции на gcc надо передавать параметры (не файлы), указывающие на линковки. В CMake для этого используется target_link_libraries(<имя проекта> <имена включений разделенные пробелами и без буквы l вначале>). В моем случае это будет выглядеть так: target_link_libraries(paintc glut GLU GL). При вызове gcc же необходимо будет указать -lglut -lGLU -lGL.

READ ALSO
Обращение к объекту из ArrayList по его полям

Обращение к объекту из ArrayList по его полям

Уважаемые сэнсэи, гуру и мастера Йоды Java, нужна подмогаСитуация тривиальная, но тревожащая мой покой

151
Работа с элементом ComboBox JavaFX

Работа с элементом ComboBox JavaFX

У меня есть небольшая программа, в которой есть ComboBox элементДанный элемент принимет 5 значений для примера

145
Класс File и каталоги

Класс File и каталоги

Сейчас изучаю ввод-вывод, столкнулся с таким понятие как каталог, не очень понимаю что это, можете объяснить?

103
Как из timestamp извлечь временной сдвиг?

Как из timestamp извлечь временной сдвиг?

У меня есть объект Timestamp в который записано значение

139