我有一个这样的项目结构(简化):
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} )
使用此设置,我无法从Shader源文件中包含glm / glm.hpp(我可以从main.cpp中执行此操作)。我没有问题,包括与glfw / glew相关的东西。我对CMake不太熟悉,我在做什么错?另外,我的方法是设置CMake项目的正确方法吗?