У меня есть модуль CMake, чтобы найти FreeGLUT:CMake находит правильную библиотеку, но VC++ пытается связать с чем-то еще
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
, когда я произвожу NMake Makefiles на 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
нигде не упоминается, что я могу видеть в сгенерированных Makefiles NMake. Он должен попытаться связать с freeglut_static.lib
, который CMake находит и устанавливает в FREEGLUT_LIBRARIES
.
Что может быть причиной этого?
Да, кавычки были проблемой. Благодаря! –
+1 Ответ был также полезен для меня, хотя у меня была проблема с другой библиотекой, чем FreeGLUT. Я бы посоветовал также опубликовать строки прагмы, вызывающие эту проблему, на этот ответ, поэтому люди, имеющие одну и ту же проблему с другим libarry, могут искать эту конкретную прагму в своей библиотеке. –