Форум программистов, компьютерный форум, киберфорум
C/C++: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285

Не линкуется FreeGLUT в CMake (CLion)

20.03.2017, 04:32. Показов 4737. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Никак не могу прилинковать FreeGLUT в CMake (который в CLion). FreeGLUT собирал в CLion, импортировав проект из CMake-файла. Собрал и release и debug версии.
Собственно, сам CMake скрипт:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cmake_minimum_required(VERSION 3.6)
project(FreeGLUTTest)
 
set(CMAKE_CXX_STANDARD 14)
 
set(SOURCE_FILES main.cpp)
 
add_library(freeglut STATIC IMPORTED)
set_property(TARGET freeglut PROPERTY IMPORTED_LOCATION_RELEASE ${CMAKE_SOURCE_DIR}/thirdparty/libs/libfreeglut_static.a)
set_property(TARGET freeglut PROPERTY IMPORTED_LOCATION_DEBUG ${CMAKE_SOURCE_DIR}/thirdparty/libs/libfreeglut_static_d.a)
set(LIBRARIES ${LIBRARIES} freeglut)
 
find_package(OpenGL REQUIRED)
if (NOT OPENGL_FOUND)
    message(ERROR " OpenGL not found!")
endif(NOT OPENGL_FOUND)
set(LIBRARIES ${LIBRARIES} ${OPENGL_LIBRARIES})
 
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
 
target_link_libraries(${PROJECT_NAME} ${LIBRARIES})
Программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "thirdparty/includes/GL/freeglut.h"
 
void display() {
    glClearColor(0, 0, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
 
    glFlush();
}
 
int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA);
    glutInitWindowSize(512, 512);
    glutInitContextProfile(GLUT_CORE_PROFILE);
    glutCreateWindow(argv[0]);
 
    glutDisplayFunc(display);
 
    glutMainLoop();
 
}
Ругается следующим образом:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
"D:\Etc\CLion 2016.3.4\bin\cmake\bin\cmake.exe" --build D:\Etc\programming\FreeGLUTTest\cmake-build-release --target FreeGLUTTest -- -j 2
[ 50%] Linking CXX executable FreeGLUTTest.exe
CMakeFiles\FreeGLUTTest.dir/objects.a(main.cpp.obj):main.cpp:(.text.startup+0x2e): undefined reference to `_imp____glutInitWithExit@12'
CMakeFiles\FreeGLUTTest.dir/objects.a(main.cpp.obj):main.cpp:(.text.startup+0x3e): undefined reference to `_imp__glutInitDisplayMode@4'
D:/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: CMakeFiles\FreeGLUTTest.dir/objects.a(main.cpp.obj): bad reloc address 0x3e in section `.text.startup'
D:/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
CMakeFiles\FreeGLUTTest.dir\build.make:96: recipe for target 'FreeGLUTTest.exe' failed
mingw32-make.exe[3]: *** [FreeGLUTTest.exe] Error 1
CMakeFiles\Makefile2:66: recipe for target 'CMakeFiles/FreeGLUTTest.dir/all' failed
mingw32-make.exe[2]: *** [CMakeFiles/FreeGLUTTest.dir/all] Error 2
CMakeFiles\Makefile2:78: recipe for target 'CMakeFiles/FreeGLUTTest.dir/rule' failed
mingw32-make.exe[1]: *** [CMakeFiles/FreeGLUTTest.dir/rule] Error 2
Makefile:117: recipe for target 'FreeGLUTTest' failed
mingw32-make.exe: *** [FreeGLUTTest] Error 2
Попробовал собрать тестовую статическую либу (банальный хэлловорлд) и прилинковать к тестовому проекту - все прошло отлично. А вот с FreeGLUT - беда.
В общем, жду и надеюсь на вашу помощь.

P.S. Да, я знаю про find_package, но это не универсальное средство для подключения либ. Как минимум, при подключении с помощью find_package линковщик не нашел функцию glutInitContextProfile, что может быть следствием того, что ранее я уже ставил GLUT и оно находило его. Но это так, догадка.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.03.2017, 04:32
Ответы с готовыми решениями:

Скачал Clion, установил MinGW, пытался настроить, но так и не смог. Clion говорит, что Cmake выдаёт ошибку
Скачал Clion, установил MinGW, пытался настроить, но так и не смог. Clion говорит, что Cmake выдаёт ошибку -- The C compiler...

Как OpenSSL добавить в линковку CLion (используется cmake и mingw)
Приветствую, друзья. Как добавить OpenSSL в линковку проекта? Я видел FingOpenSSL (cmake), но ничего не понятно, что с этим сделать. Прошу...

CMake, CLion, PDCurses
Возникли проблемы с подключением файлов библиотеки PDCurses. CMake находит ее, подключает, но потом выдает ошибки связанные с функциями (на...

4
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
23.03.2017, 15:29  [ТС]
Я что-то не указал/указал неправильно, или просто никто не знает, в чем может быть беда?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
23.03.2017, 16:12
Как вариант, библиотека собрана другим компилятором,
либо же другой версией того же компилятора,
вследствие чего имеем такие траблы при линковке.
Как вариант могу предложить собрать freeglut своим компилятором,
а не качать готовые сборки этой библиотеки.
Также посмотрите что у Вас в LIBRARIES содержится,
то бишь находится библиотека, или нет,
правильно ли там всё ну и т.д.
0
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
23.03.2017, 21:16  [ТС]
Croessmah,
Цитата Сообщение от Croessmah Посмотреть сообщение
Как вариант, библиотека собрана другим компилятором,
либо же другой версией того же компилятора
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
FreeGLUT собирал в CLion, импортировав проект из CMake-файла. Собрал и release и debug версии.
Использовал те же IDE/компилятор/линковщик.

Цитата Сообщение от Croessmah Посмотреть сообщение
Также посмотрите что у Вас в LIBRARIES содержится,
Само собой, я туда закинул собранные дебаг и релиз версии либы. И если бы их там не было - линковщик так и ругнулся бы, мол их нет.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
23.03.2017, 21:32
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
Само собой, я туда закинул собранные дебаг и релиз версии либы.
Я имею ввиду посмотрите содержимое переменной LIBRARIES,
например, с помощью message(STATUS "LIBRARIES: " ${LIBRARIES})
Также выведите полный лог выполняемых cmake и make действий.

Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
Использовал те же IDE/компилятор/линковщик.
freeglut тоже собирался с опцией set(CMAKE_CXX_STANDARD 14)?
Если нет, то попробуйте эту опцию убрать. А то в gcc поменялся ABI.

и попробуйте это убрать: set(LIBRARIES ${LIBRARIES} freeglut)
а target_link_libraries заменить: target_link_libraries(${PROJECT_NAME} ${LIBRARIES} freeglut)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2017, 21:32
Помогаю со студенческими работами здесь

Boost + Cmake + Clion
Помогите мне подключить Boost к Clion на Windows. Перепробовал уже кучу вариантов - ничего не выходит, заголовки только инклудятся, а...

[CLion] настройка дебагера на Windows 10. Не работает дебаг с профилем Visual Studio или CMake с профилем MinGW
Сделал скриншоты с настройками. Как это дело настроить? На Mac OS поставил, всё работает из коробки. На Windows 10 в консоль шрифты на...

Сборка проекта cmake с вложенными cmake
Всем привет. Подскажите пожалуйста вот у меня есть проектный файл и в нем мне надо как то обьявить указание на хранилища с другими...

CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles". CMAKE_MAKE_PROGRAM
Установил CMake. Здесь находится mingw D:\ProgramFiles\Qt\Tools\MinGW\bin mingw32-make.exe(путь в переменным среды к нему не прописан) и...

Не линкуется файл
Совсем-совсем новичек и только начал разбираться с masm32. Общем, такие дела - в obj-файл спокойно компилируется исходник, но вот дальше он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru