У меня есть такая структура проекта (упрощенно):
3rdparty
|--glm
src
|--graphics
|--Shader.cpp
|--Shader.h
|--CMakeLists.txt (3)
|--CMakeLists.txt (2)
CMakeLists.txt (1)
В (1) у меня есть:
add_executable(Main main.cpp
$<TARGET_OBJECTS:${PROJECT_NAME}-graphics>)
...
target_include_directories(${PROJECT_NAME}-graphics PRIVATE ${CMAKE_SOURCE_DIR}/src)
...
include_directories(3rdparty/glm)
link_libraries(3rdparty/glm)
target_link_libraries(Main glm)
В (2) у меня есть:
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/graphics
)
add_subdirectory(graphics)
В (3) у меня есть:
add_library(${PROJECT_NAME}-graphics OBJECT
Shader.cpp
)
target_link_libraries(${PROJECT_NAME}-graphics glm glfw ${GLEW_LIBRARIES} )
Используя эту настройку, я не могу включить glm / glm.hpp из исходных файлов моего шейдера (я могу сделать это из main.cpp). У меня нет проблем, включая GLFW / GLEW связанные вещи внутри. Я не очень знаком с CMake, что я там не так делаю? Кроме того, мой способ правильный способ настройки проектов CMake?