[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
This commit is contained in:
Albrecht Schlosser 2016-08-08 12:25:08 +00:00
parent 9b9fc92768
commit ba56c33726
3 changed files with 18 additions and 10 deletions

View File

@ -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
)

View File

@ -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

View File

@ -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)