From ba56c33726f6932536ba36a276c68db4a16df863 Mon Sep 17 00:00:00 2001 From: Albrecht Schlosser Date: Mon, 8 Aug 2016 12:25:08 +0000 Subject: [PATCH] [CMake] Fix Windows dll build with Visual Studio generator. Now you can set OPTION_BUILD_SHARED_LIBS:BOOL=ON to build FLTK dll's with Visual Studio. Tested and works (Visual Studio 2010 + 2015). Todo: dll names and target directories may need some changes. Todo: Shared libraries under Linux with CMake don't work yet: /usr/bin/ld: ../lib/libfltk.a(Fl.cxx.o): relocation R_X86_64_32S against `.bss' can not be used when making a shared object; recompile with -fPIC git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@11865 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CMake/macros.cmake | 10 +++++----- CMake/resources.cmake | 9 +++++++++ src/CMakeLists.txt | 9 ++++----- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/CMake/macros.cmake b/CMake/macros.cmake index 61e3e94bb..f5b5b2e55 100644 --- a/CMake/macros.cmake +++ b/CMake/macros.cmake @@ -29,17 +29,17 @@ macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES) endif (${LIBTYPE} STREQUAL "SHARED") if (MSVC) - set (LIBNAME_DEBUG "${LIBNAME}d") + set (LIBRARY_NAME_DEBUG "${LIBRARY_NAME}d") else () - set (LIBNAME_DEBUG "${LIBNAME}") + set (LIBRARY_NAME_DEBUG "${LIBRARY_NAME}") endif (MSVC) add_library(${LIBRARY_NAME} ${LIBTYPE} ${LIBFILES}) set_target_properties(${LIBRARY_NAME} PROPERTIES - OUTPUT_NAME ${LIBNAME} - DEBUG_OUTPUT_NAME "${LIBNAME_DEBUG}" + OUTPUT_NAME ${LIBRARY_NAME} + DEBUG_OUTPUT_NAME ${LIBRARY_NAME_DEBUG} CLEAN_DIRECT_OUTPUT TRUE COMPILE_DEFINITIONS "FL_LIBRARY" ) @@ -55,7 +55,7 @@ macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES) if (MSVC) if (OPTION_LARGE_FILE) - set_target_properties(${LIBNAME} + set_target_properties(${LIBRARYNAME} PROPERTIES LINK_FLAGS /LARGEADDRESSAWARE ) diff --git a/CMake/resources.cmake b/CMake/resources.cmake index 8af7ca2cd..37c0c08ef 100644 --- a/CMake/resources.cmake +++ b/CMake/resources.cmake @@ -38,6 +38,15 @@ find_file(HAVE_SYS_STDTYPES_H sys/stdtypes.h) find_file(HAVE_X11_XREGION_H X11/Xregion.h) find_path(HAVE_XDBE_H Xdbe.h PATH_SUFFIXES X11/extensions extensions) +if (MSVC) + message(STATUS "Note: The following three headers should all be found!") + message(STATUS "HAVE_GL_GL_H = '${HAVE_GL_GL_H}'") + message(STATUS "HAVE_GL_GLU_H = '${HAVE_GL_GLU_H}'") + message(STATUS "HAVE_LOCALE_H = '${HAVE_LOCALE_H}'") + message(STATUS "If one of these headers was not found, run cmake-gui ...") + message(STATUS "... again from a Visual Studio developer command prompt!") +endif (MSVC) + # Simulate the behavior of autoconf macro AC_HEADER_DIRENT, see: # https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Particular-Headers.html # "Check for the following header files. For the first one that is found diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7bdb46d67..755cf016c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -285,8 +285,7 @@ target_link_libraries(fltk_forms fltk) ####################################################################### FL_ADD_LIBRARY(fltk_images STATIC "${IMGCPPFILES}") -target_link_libraries(fltk_images fltk ${FLTK_PNG_LIBRARIES} - ${FLTK_JPEG_LIBRARIES} ${FLTK_ZLIB_LIBRARIES}) +target_link_libraries(fltk_images fltk) if (OPTION_USE_SYSTEM_LIBJPEG) target_link_libraries(fltk_images ${FLTK_JPEG_LIBRARIES}) @@ -325,12 +324,12 @@ if (OPTION_BUILD_SHARED_LIBS) ################################################################### FL_ADD_LIBRARY(fltk_forms SHARED "${FLCPPFILES}") - target_link_libraries(fltk_forms_SHARED fltk_SHARED) + target_link_libraries(fltk_forms_SHARED fltk) ################################################################### FL_ADD_LIBRARY(fltk_images SHARED "${IMGCPPFILES}") - target_link_libraries(fltk_images_SHARED fltk_SHARED) + target_link_libraries(fltk_images_SHARED fltk) if (OPTION_USE_SYSTEM_LIBJPEG) target_link_libraries(fltk_images_SHARED ${FLTK_JPEG_LIBRARIES}) @@ -354,7 +353,7 @@ if (OPTION_BUILD_SHARED_LIBS) if (OPENGL_FOUND) FL_ADD_LIBRARY(fltk_gl SHARED "${GLCPPFILES}") - target_link_libraries(fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES}) + target_link_libraries(fltk_gl_SHARED fltk ${OPENGL_LIBRARIES}) endif (OPENGL_FOUND) endif (OPTION_BUILD_SHARED_LIBS)