Создание проекта allegro5 с помощью CLion

Несколько дней назад я скачал clion, чтобы сделать школьный проект на C++ и Allegro5. Сначала я использовал allegro, установленный с помощью homebrew, но он не работал, поэтому я скомпилировал его самостоятельно. Поскольку я никогда раньше не работал с CMake, мне потребовалось некоторое время, чтобы включить библиотеки и скомпилировать проект, но мне это удалось. Проблема в том, что при попытке запустить выдает ошибку:

dyld: Symbol not found: __al_mangled_main
Referenced from: /usr/local/lib/liballegro_main.5.0.dylib
Expected in: flat namespace
in /usr/local/lib/liballegro_main.5.0.dylib

Мой CMakeLists.txt:

cmake_minimum_required(VERSION 3.3)
project(arkanoid)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES classes/main.cpp classes/ball.cpp classes/ball.h classes/block.cpp classes/block.h)

add_executable(arkanoid ${SOURCE_FILES})

INCLUDE_DIRECTORIES( allegro/5.0.11/include )

LINK_DIRECTORIES( allegro/5.0.11/lib )


TARGET_LINK_LIBRARIES(arkanoid  allegro_acodec
                            allegro_audio
                            allegro_color
                            allegro_dialog
                            allegro_image
                            allegro_main
                            allegro_memfile
                            allegro_physfs
                            allegro_primitives
                            allegro_ttf
                            allegro_font
                            allegro)

А пока мой main.cpp выглядит так:

#include <iostream>
#include <allegro5/allegro.h>

using namespace std;

int main() {

    al_init();

    return 0;

}

Я пытаюсь построить этот проект на OSX. Я искал 2 дня решение своей проблемы, но безрезультатно. Не так много людей используют CLion и еще меньше используют его с allegro5. Может ли кто-нибудь понять, что эта ошибка вообще означает?


person Ernest Zamelczyk    schedule 14.10.2015    source источник


Ответы (1)


Хорошо, это взорвало мой разум. Я не знаю, почему я нашел решение только после того, как спросил в stackoverflow, но я публикую его для тех, кто может столкнуться с проблемой, похожей на мою. Измените основное объявление с

int main() 

to

int main(int argc, char **argv) 

вот и все. Действительно.

person Ernest Zamelczyk    schedule 14.10.2015
comment
На самом деле это подробно описано в руководстве по началу работы с Allegro: liballeg. org/a5docs/5.0.10/ - person Paul; 14.10.2015
comment
Да, я действительно не знаю, как я пропустил это. Действительно глупая ошибка. - person Ernest Zamelczyk; 15.10.2015