Ошибка Apple Mach-O Linker с Allegro5 и Xcode с CMake - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь настроить проект проекта в XCode с Allegro. Я установил allegro5 с помощью доморощенного. Мой CMakeLists.txt выглядит следующим образом:

set(SOURCE_FILES "main.cpp")
add_executable(core ${SOURCE_FILES})

if(WIN32)
    # TODO.
else(APPLE)
    set(ALLEGRO_INCLUDE "/usr/local/include")
    set(ALLEGRO_LIB "/usr/local/lib")
    set(ALLEGRO_DYLIB, "/usr/local/lib/*.dylib")
    set(ALLEGRO_LINK_FLAGS "-lallegro -lallegro_main")
endif()

include_directories(${ALLEGRO_INCLUDE})
link_directories(${ALLEGRO_LIB})
file(GLOB LIBRARIES ${ALLEGRO_DYLIB})

target_link_libraries(core ${LIBRARIES} ${ALLEGRO_LINK_FLAGS})

Однако я получаю сообщение об ошибке: ld: library not found for -lallegro

EDIT:

Отредактированный файл CMakeLists.txt:

set(SOURCE_FILES "main.cpp")
add_executable(core ${SOURCE_FILES})

if(WIN32)
    # TODO.
else(APPLE)
    set(ALLEGRO_INCLUDE "/usr/local/include")
    set(ALLEGRO_LIB "/usr/local/lib")
    set(ALLEGRO_DYLIB, "/usr/local/lib/*.dylib")
endif()

include_directories(${ALLEGRO_INCLUDE})
link_directories(${ALLEGRO_LIB})
file(GLOB LIBRARIES ${ALLEGRO_DYLIB})

target_link_libraries(core ${LIBRARIES} ${ALLEGRO_DYLIB})

А теперь я получаю сообщение об ошибке:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
     (maybe you meant: __al_mangled_main)
ld: symbol(s) not found for architecture x86_64

1 Ответ

0 голосов
/ 06 апреля 2019

Вы неправильно поняли target_link_libraries, вы не устанавливаете здесь флаги ссылки, но вы указываете список библиотек, на которые вы хотите настроить таргетинг, так что это будет:

target_link_libraries(core ${LIBRARIES} ${ALLEGRO_DYLIB})

В противном случае вы получите флагикак -l-lallegro.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...