У меня есть модуль CMake для поиска FreeGLUT:
FIND_PATH(FREEGLUT_INCLUDE_DIR NAMES GL/freeglut.h)
FIND_LIBRARY(FREEGLUT_LIBRARY NAMES freeglut freeglut_static)
SET(FREEGLUT_LIBRARIES ${FREEGLUT_LIBRARY})
SET(FREEGLUT_INCLUDE_DIRS ${FREEGLUT_INCLUDE_DIR})
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(FreeGLUT DEFAULT_MSG FREEGLUT_LIBRARY FREEGLUT_INCLUDE_DIR)
MARK_AS_ADVANCED(FREEGLUT_INCLUDE_DIR FREEGLUT_LIBRARY)
Он отлично работает и находит freeglut_static.lib
, когда я генерирую Makeake-файлы NMake в Windows.Я пытаюсь статически связать FreeGLUT с моей DLL:
FIND_PACKAGE(FreeGLUT REQUIRED)
ADD_LIBRARY(vti SHARED ${VTI_SOURCES})
ADD_DEFINITIONS("-DBUILD_VTI=1 -DFREEGLUT_STATIC=1")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${FREEGLUT_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(vti ${FREEGLUT_LIBRARIES})
Мой исходный код собирается правильно, но когда он достигает стадии компоновки, VC ++ завершается неудачно с:
LINK: фатальная ошибка LNK1104: невозможно открыть файл 'freeglut.lib'
, что странно, поскольку freeglut.lib
нигде не упоминается, что я вижу в сгенерированных make-файлах NMake.Он должен пытаться связать с freeglut_static.lib
, который CMake находит и устанавливает в FREEGLUT_LIBRARIES
.
Что может быть причиной этого?