Подружить cmake и glew в личном проекте

213
20 апреля 2018, 15:58

Написал небольшую программу на visual studio 15 c++ с использованием GLEW GLFW GLM OpenCV. По требованиям человека, которому я это делаю, я должен отдать проект под сборку cmake. Убил уже более 20 часов, а справится получилось только с GLFW, и то лишь потому что у них было на сайте описано как именно его подключить. Написание find_package(GLEW REQUIRED) и ect. не предлагать, проект должен работать из коробки, тоесть содержать в себе данные библиотеки.

Answer 1

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

target_include_directories(${PROJECT_NAME} PUBLIC path/to/include)
LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/bin) 
TARGET_LINK_LIBRARIES(${PROJECT_NAME} lib1 lib2)

Или напрямую, с указанием полного имени:

   target_include_directories(${PROJECT_NAME} PUBLIC path/to/include)
   TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${CMAKE_BINARY_DIR}/bin/lib1.so ${CMAKE_BINARY_DIR}/bin/lib2.so)

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

target_include_directories(${PROJECT_NAME} PUBLIC path/to/include)
add_library(lib1 SHARED source1.cpp source2.cpp)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} lib1)

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

READ ALSO
Сборка небольшого проекта из GitHub

Сборка небольшого проекта из GitHub

Доброго времени сутокСобираю проект https://github

198
codecpar = NULL и audio_codec_context->channels = 0

codecpar = NULL и audio_codec_context->channels = 0

Не знаю по какой причине codecpar = NULLЕсли без codecpar делать (по аналогии с video_codec_context), то audio_codec_context->channels = 0 и данных в фрейме нет

225
Запись объекта класса в файл

Запись объекта класса в файл

Прочитал это: Запись string в бинарый файлС++

200