Fuzzylite/CMakeLists.txt

173 lines
4.6 KiB
CMake

cmake_minimum_required(VERSION 2.8)
#in windows, cmake . -G "NMake Makefiles"
#in unix, cmake . -G "Unix Makefiles"
project(fuzzylite CXX)
set(CMAKE_VERBOSE_MAKEFILE true)
if(WIN32)
message("Windows")
add_definitions(-DFL_WINDOWS)
endif()
if (UNIX)
message("Unix")
add_definitions(-DFL_UNIX)
endif()
if (APPLE)
message("Apple")
add_definitions(-DFL_APPLE)
endif()
set(FL_VERSION 4.1)
add_definitions(-DFL_VERSION="${FL_VERSION}")
set(FL_DATE "0309")
add_definitions(-DFL_DATE="0309")
option(FL_USE_FLOAT "Use fl::scalar as float" OFF)
option(FL_DEBUG "Enable additional debugging information" OFF)
option(FL_BACKTRACE "Provide backtrace information in case of errors" ON)
if(FL_DEBUG)
add_definitions(-DFL_DEBUG=true)
set(CMAKE_BUILD_TYPE Debug)
set(FL_CONF -dbg)
else()
set(CMAKE_BUILD_TYPE Release)
set(FL_CONF)
endif(FL_DEBUG)
add_definitions(-DFL_BUILD_PATH="${CMAKE_SOURCE_DIR}") #used to determine FL__FILE__
#set(EXECUTABLE_OUTPUT_PATH bin)
#set(LIBRARY_OUTPUT_PATH bin)
set(FL_LIBS)
if(UNIX)
set(CMAKE_CXX_FLAGS "-Werror -Wall -Wextra -fPIC")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
if(NOT APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") #apple does not recognise these
endif()
elseif(WIN32)
#http://msdn.microsoft.com/en-us/library/thxezb7y.aspx
set(CMAKE_CXX_FLAGS " /WX /W4 /EHsc")
set(FL_LIBS dbghelp)
endif()
if(FL_USE_FLOAT)
add_definitions(-DFL_USE_FLOAT)
endif(FL_USE_FLOAT)
if(NOT FL_BACKTRACE)
add_definitions(-DFL_BACKTRACE_OFF)
endif()
include_directories(.)
add_definitions (-std=c++0x) # -std=c++11
file(STRINGS FL_HEADERS fl-headers)
file(STRINGS FL_SOURCES fl-sources)
string(REGEX REPLACE "\n" " " ${fl-headers} ${fl-headers})
string(REGEX REPLACE "\n" " " ${fl-sources} ${fl-sources})
message("${exepath}")
# add sources of the logger library as a "LoggerCpp" library
add_library (LoggerCpp STATIC
fl/LoggerCpp/Channel.h
fl/LoggerCpp/Config.h
fl/LoggerCpp/DateTime.h
fl/LoggerCpp/Exception.h
fl/LoggerCpp/Formatter.h
fl/LoggerCpp/Log.h
fl/LoggerCpp/Logger.h
fl/LoggerCpp/LoggerCpp.h
fl/LoggerCpp/Manager.h
fl/LoggerCpp/Output.h
fl/LoggerCpp/OutputConsole.h
fl/LoggerCpp/OutputDebug.h
fl/LoggerCpp/OutputFile.h
fl/LoggerCpp/shared_ptr.hpp
fl/LoggerCpp/Utils.h
src/LoggerCpp/Config.cpp
src/LoggerCpp/DateTime.cpp
src/LoggerCpp/Log.cpp
src/LoggerCpp/Logger.cpp
src/LoggerCpp/Manager.cpp
src/LoggerCpp/OutputConsole.cpp
src/LoggerCpp/OutputDebug.cpp
src/LoggerCpp/OutputFile.cpp
)
#set_target_properties(LoggerCpp PROPERTIES COMPILE_FLAGS -fvisibility=hidden)
set(CMAKE_DEBUG_POSTFIX -dbg)
add_library(fl-shared SHARED ${fl-headers} ${fl-sources})
set_target_properties(fl-shared PROPERTIES OUTPUT_NAME fuzzylite)
set_target_properties(fl-shared PROPERTIES VERSION ${FL_VERSION} SOVERSION ${FL_VERSION})
target_link_libraries(fl-shared ${FL_LIBS} LoggerCpp)
#add_library(fl-static STATIC ${fl-headers} ${fl-sources})
#set_target_properties(fl-static PROPERTIES OUTPUT_NAME fuzzylite-static)
#target_link_libraries(fl-static ${FL_LIBS} LoggerCpp)
add_executable(fl-bin fl/Console.h src/Console.cpp src/main.cpp)
set_target_properties(fl-bin PROPERTIES OUTPUT_NAME fuzzylite)
set_target_properties(fl-bin PROPERTIES OUTPUT_NAME fuzzylite IMPORT_PREFIX _) #To prevent LNK1149 in Windows
set_target_properties(fl-bin PROPERTIES DEBUG_POSTFIX -dbg)
target_link_libraries(fl-bin fl-shared ${FL_LIBS})
include(GNUInstallDirs)
install(TARGETS fl-bin fl-shared
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(DIRECTORY fl/ DESTINATION include/fl)
#install(DIRECTORY DESTINATION include)
#if(WIN32)
# set(fl-suffix)
# add_custom_command(TARGET fl-bin POST_BUILD
# COMMAND ${CMAKE_COMMAND} -E copy_if_different
# "${CMAKE_SOURCE_DIR}/lib/fuzzylite${FL_CONF}.dll"
# ${CMAKE_SOURCE_DIR}/bin) # <--this is out-file path
#endif()
message("=====================================")
message("fuzzylite v.${FL_VERSION}b${FL_DATE}\n")
message("FL_DEBUG=${FL_DEBUG}")
message("FL_USE_FLOAT=${FL_USE_FLOAT}")
message("FL_BACKTRACE=${FL_BACKTRACE}")
message("=====================================\n")
# uninstall target
#configure_file(
#"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
#"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
#IMMEDIATE @ONLY)
#add_custom_target(uninstall
#COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake)
#unix uninstall
#xargs rm < install_manifest.txt