cmake в windows требует, чтобы все включаемые каталоги были строчными - PullRequest
0 голосов
/ 21 сентября 2018

У меня странная проблема, когда пути, которые я использую для моих 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()
...