C ++ - библиотека stati c, созданная с использованием GLFW, не будет компоноваться - PullRequest
1 голос
/ 07 августа 2020

Я создаю библиотеку stati c для своего игрового движка, которая построена с использованием следующего сценария CMake:

cmake_minimum_required(VERSION 3.10)
project(FaceEngine)

#set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
#set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
#set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)

include_directories("../Lib/glad/include")
include_directories("../Lib/glfw-3.3.2/include")
include_directories("include")

file(GLOB SOURCES "src/*.cpp")
file(GLOB SOURCES "src/glad.c")
#file(GLOB SOURCES "../Lib/glfw-3.3.2/src/*.c")
#file(GLOB SOURCES "../Lib/glad/src/glad.c")

#add_subdirectory("src/glfw")

add_library(FaceEngine STATIC ${SOURCES})
#target_link_libraries(FaceEngine glfw)

Я компилирую GLFW из исходного кода в соответствии с его официальным руководством . Как видите, я изначально пытался скомпилировать GLFW и связать его внутри библиотеки stati c. Это сценарий CMake приложения, которое я пытаюсь использовать в моей библиотеке stati c:

cmake_minimum_required(VERSION 3.10)
project(FaceEngineTest)

set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
add_subdirectory("glfw")

link_directories("../FaceEngine")

include_directories("../Lib/glad/include")
include_directories("../Lib/glfw-3.3.2/include")
include_directories("../FaceEngine/include")

file(GLOB SOURCES "./*.cpp")

add_executable(FaceEngineTest ${SOURCES})
target_link_libraries(FaceEngineTest glfw)
target_link_libraries(FaceEngineTest libFaceEngine.a)

Когда я пытаюсь использовать любую функцию своего движка, появляется неопределенная ссылка. Заголовки правильно указаны, и VSCode распознает все содержимое моей библиотеки stati c. Тем не менее, я все еще могу использовать все функции GLFW, и я могу создать класс, производный от класса моего движка:

class MyGame : public FaceEngine::Game

Почему моя программа может нормально использовать функции GLFW, но не мою собственную библиотеку?

...