by default but optionally install includes, make easy to find variables in large lists
This commit is contained in:
parent
312b740354
commit
be2b67d970
108
CMakeLists.txt
108
CMakeLists.txt
@ -18,16 +18,17 @@ cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
set(NANA_LINKS)
|
||||
|
||||
option(ENABLE_MINGW_STD_THREADS_WITH_MEGANZ "replaced boost.thread with meganz's mingw-std-threads." OFF)
|
||||
option(ENABLE_PNG "Enable the use of PNG" OFF)
|
||||
option(LIBPNG_FROM_OS "Use libpng from operating system." ON)
|
||||
option(ENABLE_JPEG "Enable the use of JPEG" OFF)
|
||||
option(LIBJPEG_FROM_OS "Use libjpeg from operating system." ON)
|
||||
option(ENABLE_AUDIO "Enable class audio::play for PCM playback." OFF)
|
||||
option(CMAKE_VERBOSE_PREPROCESSOR "Show annoying debug messages during compilation." OFF)
|
||||
option(CMAKE_STOP_VERBOSE_PREPROCESSOR "Stop compilation after showing the annoying debug messages." ON)
|
||||
option(BUILD_NANA_DEMOS "Build all the demos form the nana_demo repository." OFF)
|
||||
option(INCLUDE_EXPERIMENTAL_DEMOS "" ON)
|
||||
option(NANA_CMAKE_INSTALL_INCLUDES "Install nana includes when compile the library" ON)
|
||||
option(NANA_CMAKE_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ "replaced boost.thread with meganz's mingw-std-threads." OFF)
|
||||
option(NANA_CMAKE_ENABLE_PNG "Enable the use of PNG" OFF)
|
||||
option(NANA_CMAKE_LIBPNG_FROM_OS "Use libpng from operating system." ON)
|
||||
option(NANA_CMAKE_ENABLE_JPEG "Enable the use of JPEG" OFF)
|
||||
option(NANA_CMAKE_LIBJPEG_FROM_OS "Use libjpeg from operating system." ON)
|
||||
option(NANA_CMAKE_ENABLE_AUDIO "Enable class audio::play for PCM playback." OFF)
|
||||
option(NANA_CMAKE_VERBOSE_PREPROCESSOR "Show annoying debug messages during compilation." OFF)
|
||||
option(NANA_CMAKE_STOP_VERBOSE_PREPROCESSOR "Stop compilation after showing the annoying debug messages." ON)
|
||||
option(NANA_CMAKE_BUILD_DEMOS "Build all the demos form the nana_demo repository." OFF)
|
||||
option(NANA_CMAKE_INCLUDE_EXPERIMENTAL_DEMOS "" ON)
|
||||
|
||||
# The ISO C++ File System Technical Specification (ISO-TS, or STD) is optional.
|
||||
# http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4100.pdf
|
||||
@ -41,28 +42,28 @@ option(INCLUDE_EXPERIMENTAL_DEMOS "" ON)
|
||||
# to use boost if available. Nana own implementation will be use only none of them are available.
|
||||
# You can change that default if you change one of the following
|
||||
# (please don't define more than one of the _XX_FORCE options):
|
||||
option(CMAKE_FIND_BOOST_FILESYSTEM "Search: Is Boost filesystem available?" ON)
|
||||
option(CMAKE_NANA_FILESYSTEM_FORCE "Force nana filesystem over ISO and boost?" OFF)
|
||||
option(CMAKE_STD_FILESYSTEM_FORCE "Use of STD filesystem?(a compilation error will ocurre if not available)" OFF)
|
||||
option(CMAKE_BOOST_FILESYSTEM_FORCE "Force use of Boost filesystem if available (over STD)?" OFF)
|
||||
option(NANA_CMAKE_FIND_BOOST_FILESYSTEM "Search: Is Boost filesystem available?" ON)
|
||||
option(NANA_CMAKE_NANA_FILESYSTEM_FORCE "Force nana filesystem over ISO and boost?" OFF)
|
||||
option(NANA_CMAKE_STD_FILESYSTEM_FORCE "Use of STD filesystem?(a compilation error will ocurre if not available)" OFF)
|
||||
option(NANA_CMAKE_BOOST_FILESYSTEM_FORCE "Force use of Boost filesystem if available (over STD)?" OFF)
|
||||
# cmake will find the package self, if don't works set the following (please find the correct values):
|
||||
#option(CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT "Where to find <boost/filesystem.hpp>?" "../")
|
||||
#option(CMAKE_BOOST_FILESYSTEM_LIB "Flag for the compiler to link: " "-lboost/fs")
|
||||
#include_directories("${CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT}")
|
||||
#list(APPEND NANA_LINKS "${CMAKE_BOOST_FILESYSTEM_LIB}")
|
||||
#option(NANA_CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT "Where to find <boost/filesystem.hpp>?" "../")
|
||||
#option(NANA_CMAKE_BOOST_FILESYSTEM_LIB "Flag for the compiler to link: " "-lboost/fs")
|
||||
#include_directories("${NANA_CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT}")
|
||||
#list(APPEND NANA_LINKS "${NANA_CMAKE_BOOST_FILESYSTEM_LIB}")
|
||||
|
||||
|
||||
if (CMAKE_NANA_FILESYSTEM_FORCE)
|
||||
if (NANA_CMAKE_NANA_FILESYSTEM_FORCE)
|
||||
add_definitions(-DNANA_FILESYSTEM_FORCE)
|
||||
|
||||
elseif (CMAKE_STD_FILESYSTEM_FORCE)
|
||||
elseif (NANA_CMAKE_STD_FILESYSTEM_FORCE)
|
||||
add_definitions(-DSTD_FILESYSTEM_FORCE)
|
||||
|
||||
elseif (CMAKE_FIND_BOOST_FILESYSTEM OR CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
elseif (NANA_CMAKE_FIND_BOOST_FILESYSTEM OR NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
|
||||
if (CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
if (NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
add_definitions(-DNANA_BOOST_FILESYSTEM_FORCE)
|
||||
endif(CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
endif(NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
|
||||
# https://cmake.org/cmake/help/git-master/module/FindBoost.html
|
||||
# Implicit dependencies such as Boost::filesystem requiring Boost::system will be automatically detected and satisfied,
|
||||
@ -79,7 +80,7 @@ elseif (CMAKE_FIND_BOOST_FILESYSTEM OR CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
set(Boost_USE_STATIC_RUNTIME ON) # ??
|
||||
#set(Boost_USE_MULTITHREADED ON)
|
||||
|
||||
endif (CMAKE_FIND_BOOST_FILESYSTEM OR CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
endif (NANA_CMAKE_FIND_BOOST_FILESYSTEM OR NANA_CMAKE_BOOST_FILESYSTEM_FORCE)
|
||||
|
||||
|
||||
|
||||
@ -104,9 +105,9 @@ if(WIN32)
|
||||
endif(MSVC)
|
||||
|
||||
if(MINGW)
|
||||
if(ENABLE_MINGW_STD_THREADS_WITH_MEGANZ)
|
||||
if(NANA_CMAKE_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ)
|
||||
add_definitions(-DNANA_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ)
|
||||
endif(ENABLE_MINGW_STD_THREADS_WITH_MEGANZ)
|
||||
endif(NANA_CMAKE_ENABLE_MINGW_STD_THREADS_WITH_MEGANZ)
|
||||
endif(MINGW)
|
||||
elseif(WIN32)
|
||||
set(BUILD_FreeMe OFF)
|
||||
@ -134,34 +135,34 @@ if(UNIX)
|
||||
endif(UNIX)
|
||||
|
||||
#Find PNG
|
||||
if(ENABLE_PNG)
|
||||
if(NANA_CMAKE_ENABLE_PNG)
|
||||
add_definitions(-DNANA_ENABLE_PNG)
|
||||
#set(NANA_PNG_LIB "png")
|
||||
list(APPEND NANA_LINKS -lpng )
|
||||
if(LIBPNG_FROM_OS)
|
||||
if(NANA_CMAKE_LIBPNG_FROM_OS)
|
||||
find_package(PNG)
|
||||
if (PNG_FOUND)
|
||||
include_directories( ${PNG_INCLUDE_DIRS})
|
||||
add_definitions(-DUSE_LIBPNG_FROM_OS)
|
||||
endif(PNG_FOUND)
|
||||
endif(LIBPNG_FROM_OS)
|
||||
endif(ENABLE_PNG)
|
||||
endif(NANA_CMAKE_LIBPNG_FROM_OS)
|
||||
endif(NANA_CMAKE_ENABLE_PNG)
|
||||
|
||||
#Find JPEG
|
||||
if(ENABLE_JPEG)
|
||||
if(NANA_CMAKE_ENABLE_JPEG)
|
||||
add_definitions(-DNANA_ENABLE_JPEG)
|
||||
#set(NANA_JPEG_LIB "jpeg")
|
||||
list(APPEND NANA_LINKS -ljpeg )
|
||||
if(LIBJPEG_FROM_OS)
|
||||
if(NANA_CMAKE_LIBJPEG_FROM_OS)
|
||||
find_package(JPEG)
|
||||
if (JPEG_FOUND)
|
||||
include_directories( ${JPEG_INCLUDE_DIRS})
|
||||
add_definitions(-DUSE_LIBJPEG_FROM_OS)
|
||||
endif(JPEG_FOUND)
|
||||
endif(LIBJPEG_FROM_OS)
|
||||
endif(ENABLE_JPEG)
|
||||
endif(NANA_CMAKE_LIBJPEG_FROM_OS)
|
||||
endif(NANA_CMAKE_ENABLE_JPEG)
|
||||
|
||||
if(ENABLE_AUDIO)
|
||||
if(NANA_CMAKE_ENABLE_AUDIO)
|
||||
add_definitions(-DNANA_ENABLE_AUDIO)
|
||||
if(UNIX)
|
||||
find_package(ASOUND)
|
||||
@ -172,11 +173,11 @@ if(ENABLE_AUDIO)
|
||||
message(FATAL_ERROR "libasound is not found")
|
||||
endif(ASOUND_FOUND)
|
||||
endif(UNIX)
|
||||
endif(ENABLE_AUDIO)
|
||||
endif(NANA_CMAKE_ENABLE_AUDIO)
|
||||
|
||||
if(CMAKE_VERBOSE_PREPROCESSOR)
|
||||
if(NANA_CMAKE_VERBOSE_PREPROCESSOR)
|
||||
add_definitions(-DVERBOSE_PREPROCESSOR)
|
||||
endif(CMAKE_VERBOSE_PREPROCESSOR)
|
||||
endif(NANA_CMAKE_VERBOSE_PREPROCESSOR)
|
||||
|
||||
|
||||
set(NANA_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/source)
|
||||
@ -194,7 +195,7 @@ aux_source_directory(${NANA_SOURCE_DIR}/paint NANA_PAINT_SOURCE)
|
||||
aux_source_directory(${NANA_SOURCE_DIR}/paint/detail NANA_PAINT_DETAIL_SOURCE)
|
||||
aux_source_directory(${NANA_SOURCE_DIR}/system NANA_SYSTEM_SOURCE)
|
||||
aux_source_directory(${NANA_SOURCE_DIR}/threads NANA_THREADS_SOURCE)
|
||||
if(ENABLE_AUDIO)
|
||||
if(NANA_CMAKE_ENABLE_AUDIO)
|
||||
aux_source_directory(${NANA_SOURCE_DIR}/audio NANA_AUDIO_SOURCE)
|
||||
aux_source_directory(${NANA_SOURCE_DIR}/audio/detail NANA_AUDIO_DETAIL_SOURCE)
|
||||
endif()
|
||||
@ -226,19 +227,21 @@ install(TARGETS ${PROJECT_NAME}
|
||||
LIBRARY DESTINATION lib)
|
||||
|
||||
# Install include directories too.
|
||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/nana
|
||||
DESTINATION include)
|
||||
if(NANA_CMAKE_INSTALL_INCLUDES)
|
||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/nana
|
||||
DESTINATION include)
|
||||
endif(NANA_CMAKE_INSTALL_INCLUDES)
|
||||
|
||||
set_property( TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14 )
|
||||
|
||||
# TODO: move this nana-demo section to the nana demo repository, and here only include that cmake file
|
||||
|
||||
if (BUILD_NANA_DEMOS)
|
||||
if (NANA_CMAKE_BUILD_DEMOS)
|
||||
|
||||
set (demos calculator notepad widget_show widget_show2 )
|
||||
if (INCLUDE_EXPERIMENTAL_DEMOS)
|
||||
if (NANA_CMAKE_INCLUDE_EXPERIMENTAL_DEMOS)
|
||||
list(APPEND demos file_explorer)
|
||||
endif (INCLUDE_EXPERIMENTAL_DEMOS)
|
||||
endif (NANA_CMAKE_INCLUDE_EXPERIMENTAL_DEMOS)
|
||||
# Pending: FreeMe
|
||||
|
||||
foreach ( demo ${demos})
|
||||
@ -268,7 +271,7 @@ if (BUILD_NANA_DEMOS)
|
||||
message("... to build: ../nana-demo/Examples/${demo}.cpp" )
|
||||
endforeach( demo ${demos})
|
||||
|
||||
endif (BUILD_NANA_DEMOS)
|
||||
endif (NANA_CMAKE_BUILD_DEMOS)
|
||||
|
||||
|
||||
# set compile flags
|
||||
@ -297,14 +300,13 @@ message ( "COMPILER_IS_CLANG = " ${COMPILER_IS_CLANG})
|
||||
message ( "CMAKE_CXX_FLAGS = " ${CMAKE_CXX_FLAGS})
|
||||
message ( "CMAKE_COMPILER_IS_GNUCXX= " ${CMAKE_COMPILER_IS_GNUCXX})
|
||||
message ( "CMAKE_EXE_LINKER_FLAGS = " ${CMAKE_EXE_LINKER_FLAGS})
|
||||
message ( "NANA_LINKS = " ${NANA_LINKS})
|
||||
message ( "ENABLE_AUDIO = " ${ENABLE_AUDIO})
|
||||
message ( "CMAKE_INSTALL_PREFIX = " ${CMAKE_INSTALL_PREFIX})
|
||||
message ( "DESTDIR = " ${DESTDIR})
|
||||
message ( "CMAKE_BOOST_FILESYSTEM_AVAILABLE = " ${CMAKE_BOOST_FILESYSTEM_AVAILABLE})
|
||||
message ( "NANA_BOOST_FILESYSTEM_PREFERRED = " ${NANA_BOOST_FILESYSTEM_PREFERRED})
|
||||
message ( "CMAKE_BOOST_FILESYSTEM_FORCE = " ${CMAKE_BOOST_FILESYSTEM_FORCE})
|
||||
message ( "CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT = " ${CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT})
|
||||
message ( "CMAKE_BOOST_FILESYSTEM_LIB = " ${CMAKE_BOOST_FILESYSTEM_LIB})
|
||||
message ( "CMAKE_INSTALL_PREFIX = " ${CMAKE_INSTALL_PREFIX})
|
||||
message ( "NANA_LINKS = " ${NANA_LINKS})
|
||||
message ( "NANA_CMAKE_ENABLE_AUDIO = " ${NANA_CMAKE_ENABLE_AUDIO})
|
||||
message ( "NANA_CMAKE_FIND_BOOST_FILESYSTEM = " ${NANA_CMAKE_FIND_BOOST_FILESYSTEM})
|
||||
message ( "NANA_CMAKE_BOOST_FILESYSTEM_FORCE = " ${NANA_CMAKE_BOOST_FILESYSTEM_FORCE})
|
||||
message ( "NANA_CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT = " ${NANA_CMAKE_BOOST_FILESYSTEM_INCLUDE_ROOT})
|
||||
message ( "NANA_CMAKE_BOOST_FILESYSTEM_LIB = " ${NANA_CMAKE_BOOST_FILESYSTEM_LIB})
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user