Написал небольшую программу на visual studio 15 c++ с использованием GLEW GLFW GLM OpenCV. По требованиям человека, которому я это делаю, я должен отдать проект под сборку cmake. Убил уже более 20 часов, а справится получилось только с GLFW, и то лишь потому что у них было на сайте описано как именно его подключить. Написание find_package(GLEW REQUIRED) и ect. не предлагать, проект должен работать из коробки, тоесть содержать в себе данные библиотеки.
Если библиотеки распространяются в виде бинарников, можно вручную указать путь к бинарникам и путь к заголовочным файлам, как я понимаю вам нужно именно это:
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 должен нормально работать, для него обычно можно указать нестандартный префикс, в том числе по относительному пути, но это нужно для конкретных библиотек гуглить.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей