У меня странная проблема, когда пути, которые я использую для моих include_directories
и target_link_libraries
, должны быть все в нижнем регистре.
В моем проекте есть подкаталог под номером GLTestBed/src
, если я пытаюсьчтобы включить его, ниндзя (или даже встроенное решение VS) выдает ошибку
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ninja : error : '../../GLTestBed/src/Mesh.cpp', needed by 'GLTestBed/CMakeFiles/GlTestBed.dir/src/Mesh.cpp.obj', missing and no known rule to make it
Mesh.cpp - первый файл, добавленный в мою директиву add_Library
, если я удалю его, он выдаст эту ошибку дляфайл, который находится наверху, поэтому я уверен, что это не ошибка только для этого конкретного файла
Однако, если я изменю имя папки с GLTestBed
на gltestbed
, каждая вещь будет построена правильно
CmakeLists.txt в основной папке (GLParticles)
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 11)
project(GLParticles)
set (glparticlesdir "${CMAKE_CURRENT_SOURCE_DIR}/GLTestBed")
message ("-----" , ${glparticlesdir})
add_subdirectory(${glparticlesdir})
add_executable(GLParticles
src/main.cpp
src/ParticleWorld.cpp
src/ParticleWorld.h
src/BurstParticleUpdater.cpp
src/BurstParticleUpdater.h src/SineWaveUpdater.cpp src/SineWaveUpdater.h)
include_directories(${glparticlesdir}/src)
include_directories(${glparticlesdir}/ext/glm)
target_link_libraries(GLParticles
GlTestBed)
# SET(CMAKE_CXX_LINK_FLAGS "-framework OpenGL")
и CmakeLists.txt в папке GLTestBed
cmake_minimum_required(VERSION 3.10)
project(GlTestBed)
set(CMAKE_CXX_STANDARD 11)
find_package(OpenGL REQUIRED)
#find_package(GLEW REQUIRED)
message ('--------' ${OPENGL_LIBRARIES})
add_Library(GlTestBed
src/Globals.h
src/Mesh.cpp
src/Mesh.h
src/ResourceManager.cpp
src/ResourceManager.hpp
src/Shader.cpp
src/Shader.h
src/stb_image.cpp
src/stb_image.h
src/Material.h
src/Engine.cpp src/Engine.h
src/Particle.cpp
src/Particle.h
src/Camera.h
src/Camera.cpp
src/ParticleManager.cpp
src/ParticleManager.h
src/ParticleUpdater.h)
target_include_directories(GlTestBed PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_include_directories(GlTestBed PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/ext/glm)
target_link_libraries(GlTestBed
${OPENGL_LIBRARIES}
glew32.lib
sfml-graphics.lib
sfml-window.lib
sfml-system.lib)
if(APPLE)
target_include_directories(GlTestBed PUBLIC
/usr/local/include)
target_link_libraries(GlTestBed
/usr/local/Cellar/glew/2.1.0/lib/libGLEW.2.1.0.dylib
/usr/local/Cellar/sfml/2.4.2_1/lib/libsfml-window.2.4.2.dylib
/usr/local/Cellar/sfml/2.4.2_1/lib/libsfml-system.2.4.2.dylib ${OPENGL_LIBRARIES})
endif()