Skip to content
Snippets Groups Projects
Commit b8318480 authored by Albrecht Schlosser's avatar Albrecht Schlosser
Browse files

CMake: Build static and shared libs side-by-side

Clean up library and variable names.
Remove '_SHARED' suffix from library (output) filenames.

This commit was inspired by David Runge ('dvzrv'), thanks.
See PR #21.

Fixes #21
parent 6279ab05
Branches
Tags
No related merge requests found
...@@ -53,30 +53,32 @@ endmacro (fl_debug_var) ...@@ -53,30 +53,32 @@ endmacro (fl_debug_var)
macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES) macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
if (${LIBTYPE} STREQUAL "SHARED") if (${LIBTYPE} STREQUAL "SHARED")
set (LIBRARY_NAME ${LIBNAME}_SHARED) set (TARGET_NAME ${LIBNAME}_SHARED)
else () else ()
set (LIBRARY_NAME ${LIBNAME}) set (TARGET_NAME ${LIBNAME})
endif (${LIBTYPE} STREQUAL "SHARED") endif (${LIBTYPE} STREQUAL "SHARED")
if (MSVC) if (MSVC)
set (LIBRARY_NAME_DEBUG "${LIBRARY_NAME}d") set (DEBUG_OUTPUT_NAME "${LIBNAME}d")
else () else ()
set (LIBRARY_NAME_DEBUG "${LIBRARY_NAME}") set (DEBUG_OUTPUT_NAME "${LIBNAME}")
endif (MSVC) endif (MSVC)
add_library(${LIBRARY_NAME} ${LIBTYPE} ${LIBFILES}) add_library(${TARGET_NAME} ${LIBTYPE} ${LIBFILES})
set_target_properties(${LIBRARY_NAME} set_target_properties(${TARGET_NAME}
PROPERTIES PROPERTIES
OUTPUT_NAME ${LIBRARY_NAME} OUTPUT_NAME ${LIBNAME}
DEBUG_OUTPUT_NAME ${LIBRARY_NAME_DEBUG} DEBUG_OUTPUT_NAME ${DEBUG_OUTPUT_NAME}
CLEAN_DIRECT_OUTPUT TRUE CLEAN_DIRECT_OUTPUT TRUE
COMPILE_DEFINITIONS "FL_LIBRARY" COMPILE_DEFINITIONS "FL_LIBRARY"
) )
if (${LIBTYPE} STREQUAL "SHARED") if (${LIBTYPE} STREQUAL "SHARED")
set_target_properties(${LIBRARY_NAME} set_target_properties(${TARGET_NAME}
PROPERTIES PROPERTIES
OUTPUT_NAME ${LIBNAME}
DEBUG_OUTPUT_NAME ${DEBUG_OUTPUT_NAME}
VERSION ${FLTK_VERSION_FULL} VERSION ${FLTK_VERSION_FULL}
SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR} SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}
PREFIX "lib" # for MSVC static/shared coexistence PREFIX "lib" # for MSVC static/shared coexistence
...@@ -85,28 +87,28 @@ macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES) ...@@ -85,28 +87,28 @@ macro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
if (MSVC) if (MSVC)
if (OPTION_LARGE_FILE) if (OPTION_LARGE_FILE)
set_target_properties(${LIBRARY_NAME} set_target_properties(${TARGET_NAME}
PROPERTIES PROPERTIES
LINK_FLAGS /LARGEADDRESSAWARE LINK_FLAGS /LARGEADDRESSAWARE
) )
endif (OPTION_LARGE_FILE) endif (OPTION_LARGE_FILE)
if (${LIBTYPE} STREQUAL "SHARED") if (${LIBTYPE} STREQUAL "SHARED")
set_target_properties(${LIBRARY_NAME} set_target_properties(${TARGET_NAME}
PROPERTIES PROPERTIES
COMPILE_DEFINITIONS "FL_DLL" COMPILE_DEFINITIONS "FL_DLL"
) )
endif (${LIBTYPE} STREQUAL "SHARED") endif (${LIBTYPE} STREQUAL "SHARED")
endif (MSVC) endif (MSVC)
install(TARGETS ${LIBRARY_NAME} install(TARGETS ${TARGET_NAME}
EXPORT FLTK-Targets EXPORT FLTK-Targets
RUNTIME DESTINATION ${FLTK_BINDIR} RUNTIME DESTINATION ${FLTK_BINDIR}
LIBRARY DESTINATION ${FLTK_LIBDIR} LIBRARY DESTINATION ${FLTK_LIBDIR}
ARCHIVE DESTINATION ${FLTK_LIBDIR} ARCHIVE DESTINATION ${FLTK_LIBDIR}
) )
list(APPEND FLTK_LIBRARIES "${LIBRARY_NAME}") list(APPEND FLTK_LIBRARIES "${TARGET_NAME}")
set (FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE) set (FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE)
endmacro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES) endmacro(FL_ADD_LIBRARY LIBNAME LIBTYPE LIBFILES)
......
...@@ -110,7 +110,6 @@ CREATE_EXAMPLE(utf8 utf8.cxx fltk) ...@@ -110,7 +110,6 @@ CREATE_EXAMPLE(utf8 utf8.cxx fltk)
CREATE_EXAMPLE(valuators valuators.fl fltk) CREATE_EXAMPLE(valuators valuators.fl fltk)
CREATE_EXAMPLE(unittests unittests.cxx fltk) CREATE_EXAMPLE(unittests unittests.cxx fltk)
CREATE_EXAMPLE(windowfocus windowfocus.cxx fltk) CREATE_EXAMPLE(windowfocus windowfocus.cxx fltk)
CREATE_EXAMPLE(fltk-versions ../examples/fltk-versions.cxx fltk) CREATE_EXAMPLE(fltk-versions ../examples/fltk-versions.cxx fltk)
# OpenGL demos... # OpenGL demos...
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment