From f007152d2cb63a728c5a3f1e5305875f41a770d1 Mon Sep 17 00:00:00 2001 From: Rokas Kupstys Date: Thu, 8 Jun 2017 17:13:32 +0300 Subject: [PATCH] CMake script rework --- CMakeLists.txt | 59 +++--- easy_profiler_core/CMakeLists.txt | 293 +++++++++++------------------- easy_profiler_core/current_time.h | 10 +- easy_profiler_core/version.info | 1 - profiler_gui/CMakeLists.txt | 118 +++++------- reader/CMakeLists.txt | 22 +-- sample/CMakeLists.txt | 49 +---- 7 files changed, 181 insertions(+), 371 deletions(-) delete mode 100644 easy_profiler_core/version.info diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b582c8..223eed2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,47 +1,32 @@ -project(profiling_tool) -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 2.8.12.1) +project(easy_profiler CXX) set_property(GLOBAL PROPERTY USE_FOLDERS ON) -set( - EASY_ROOT - ${CMAKE_CURRENT_LIST_DIR} -) +set(EASY_PROGRAM_VERSION_MAJOR 1) +set(EASY_PROGRAM_VERSION_MINOR 3) +set(EASY_PROGRAM_VERSION_PATCH 0) +set(EASY_PRODUCT_VERSION_STRING "${EASY_PROGRAM_VERSION_MAJOR}.${EASY_PROGRAM_VERSION_MINOR}.${EASY_PROGRAM_VERSION_PATCH}") -set(OUTPUT_DIR - ${EASY_ROOT}/bin -) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/bin) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/bin) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY - ${OUTPUT_DIR} -) +# set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/sdk) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY - ${OUTPUT_DIR} -) - -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY - ${OUTPUT_DIR} -) - -include_directories( - easy_profiler_core/include -) - -if(UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -Wno-reorder -Wno-braced-scalar-init -pedantic -O3" ) -else() - add_definitions( - -D_CRT_SECURE_NO_WARNINGS - ) -endif(UNIX) - -#set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/sdk) +macro(easy_define_target_option TARGET SOURCE_OPTION TARGET_DEFINITION) + if (${SOURCE_OPTION}) + set(_VALUE 1) + else () + set(_VALUE 0) + endif () + target_compile_options(${TARGET} PUBLIC -D${TARGET_DEFINITION}=${_VALUE}) +endmacro() add_subdirectory(easy_profiler_core) add_subdirectory(profiler_gui) -add_subdirectory(sample) -add_subdirectory(reader) - +if (NOT EASY_PROFILER_NO_SAMPLES) + add_subdirectory(sample) + add_subdirectory(reader) +endif () diff --git a/easy_profiler_core/CMakeLists.txt b/easy_profiler_core/CMakeLists.txt index 16781fc..2bdd15e 100644 --- a/easy_profiler_core/CMakeLists.txt +++ b/easy_profiler_core/CMakeLists.txt @@ -1,142 +1,51 @@ -cmake_minimum_required(VERSION 2.8) -project(easy_profiler CXX) - -IF (NOT DEFINED LIB_NAME) - SET(LIB_NAME ${PROJECT_NAME}) -ENDIF() - - -if(NOT DEFINED EASY_PROGRAM_VERSION_MAJOR) - file (STRINGS ${CMAKE_CURRENT_LIST_DIR}/version.info EASY_PRODUCT_VERSION_STRING) - string(REPLACE "." ";" VERSION_LIST ${EASY_PRODUCT_VERSION_STRING}) - - list(GET VERSION_LIST 0 EASY_PROGRAM_VERSION_MAJOR) - list(GET VERSION_LIST 1 EASY_PROGRAM_VERSION_MINOR) - list(GET VERSION_LIST 2 EASY_PROGRAM_VERSION_PATCH) - - # EasyProfiler version - add_definitions( - -DEASY_PROFILER_VERSION_MAJOR=${EASY_PROGRAM_VERSION_MAJOR} - -DEASY_PROFILER_VERSION_MINOR=${EASY_PROGRAM_VERSION_MINOR} - -DEASY_PROFILER_VERSION_PATCH=${EASY_PROGRAM_VERSION_PATCH} - ) - # EasyProfiler version - - set(EASY_PROGRAM_VERSION_MAJOR ${EASY_PROGRAM_VERSION_MAJOR} PARENT_SCOPE) - set(EASY_PROGRAM_VERSION_MINOR ${EASY_PROGRAM_VERSION_MINOR} PARENT_SCOPE) - set(EASY_PROGRAM_VERSION_PATCH ${EASY_PROGRAM_VERSION_PATCH} PARENT_SCOPE) - -endif(NOT DEFINED EASY_PROGRAM_VERSION_MAJOR) - message(STATUS "") -message(STATUS "EASY_PROFILER.Core version = ${EASY_PROGRAM_VERSION_MAJOR}.${EASY_PROGRAM_VERSION_MINOR}.${EASY_PROGRAM_VERSION_PATCH}") +message(STATUS "EASY_PROFILER.Core version = ${EASY_PRODUCT_VERSION_STRING}") message(STATUS "") +set(EASY_DEFAULT_PORT 28077 CACHE STRING "Default listening port") +set(EASY_OPTION_LISTEN OFF CACHE BOOL "Enable automatic startListen on startup") +set(EASY_OPTION_PROFILE_SELF OFF CACHE BOOL "Enable self profiling (measure time for internal storage expand)") +set(EASY_OPTION_PROFILE_SELF_BLOCKS_ON OFF CACHE BOOL "Storage expand default status (profiler::ON or profiler::OFF)") +set(EASY_OPTION_LOG OFF CACHE BOOL "Print errors to stderr") +set(EASY_OPTION_PREDEFINED_COLORS OFF CACHE BOOL "Use predefined set of colors (see profiler_colors.h). If you want to use your own colors palette you can turn this option OFF") +set(EASY_OPTION_LIB_TYPE SHARED CACHE BOOL "easy_profiler library type. SHARED or STATIC") +if (WIN32) + set(EASY_OPTION_EVENT_TRACING ON CACHE BOOL "Enable event tracing by default") + set(EASY_OPTION_LOW_PRIORITY_EVENT_TRACING ON CACHE BOOL "Set low priority for event tracing thread") +endif (WIN32) +set(BUILD_WITH_CHRONO_STEADY_CLOCK OFF CACHE BOOL "Use std::chrono::steady_clock as a timer" ) +set(BUILD_WITH_CHRONO_HIGH_RESOLUTION_CLOCK OFF CACHE BOOL "Use std::chrono::high_resolution_clock as a timer") -# EasyProfiler options:---------------------------------------------- -set(EASY_DEFAULT_PORT 28077) # Default listening port -set(EASY_OPTION_LISTEN OFF) # Enable automatic startListen on startup -set(EASY_OPTION_PROFILE_SELF OFF) # Enable self profiling (measure time for internal storage expand) -set(EASY_OPTION_PROFILE_SELF_BLOCKS_ON OFF) # Storage expand default status (profiler::ON or profiler::OFF) -set(EASY_OPTION_LOG OFF) # Print errors to stderr -set(EASY_OPTION_PREDEFINED_COLORS ON) # Use predefined set of colors (see profiler_colors.h) - # If you want to use your own colors palette you can turn this option OFF +message(STATUS "-------- EASY_PROFILER OPTIONS: --------") +if (BUILD_WITH_CHRONO_STEADY_CLOCK) + message(STATUS " Use std::chrono::steady_clock as a timer") +elseif (BUILD_WITH_CHRONO_HIGH_RESOLUTION_CLOCK) + message(STATUS " Use std::chrono::high_resolution_clock as a timer") +else () + if (WIN32) + message(STATUS " Use QueryPerformanceCounter as a timer") + else () + message(STATUS " Use rtdsc as a timer") + endif () +endif () -option(BUILD_WITH_CHRONO_STEADY_CLOCK "Use std::chrono::steady_clock as a timer" OFF) -option(BUILD_WITH_CHRONO_HIGH_RESOLUTION_CLOCK "Use std::chrono::high_resolution_clock as a timer" OFF) - -if(BUILD_WITH_CHRONO_STEADY_CLOCK) - add_definitions( - -DEASY_CHRONO_STEADY_CLOCK - ) -endif(BUILD_WITH_CHRONO_STEADY_CLOCK) - -if(BUILD_WITH_CHRONO_HIGH_RESOLUTION_CLOCK) - add_definitions( - -DEASY_CHRONO_HIGHRES_CLOCK - ) -endif(BUILD_WITH_CHRONO_HIGH_RESOLUTION_CLOCK) - -if(WIN32) - set(EASY_OPTION_EVENT_TRACING ON) # Enable event tracing by default - set(EASY_OPTION_LOW_PRIORITY_EVENT_TRACING ON) # Set low priority for event tracing thread -endif(WIN32) - -MESSAGE(STATUS "EASY_PROFILER OPTIONS:--------------") - -if(BUILD_WITH_CHRONO_STEADY_CLOCK) - MESSAGE(STATUS " Use std::chrono::steady_clock as a timer") -elseif(BUILD_WITH_CHRONO_HIGH_RESOLUTION_CLOCK) - MESSAGE(STATUS " Use std::chrono::high_resolution_clock as a timer") -else() - if(WIN32) - MESSAGE(STATUS " Use QueryPerformanceCounter as a timer") - else() - MESSAGE(STATUS " Use rtdsc as a timer") - endif(WIN32) -endif(BUILD_WITH_CHRONO_STEADY_CLOCK) - -MESSAGE(STATUS " Default listening port = ${EASY_DEFAULT_PORT}") -MESSAGE(STATUS " Auto-start listening = ${EASY_OPTION_LISTEN}") -MESSAGE(STATUS " Profile self = ${EASY_OPTION_PROFILE_SELF}") -MESSAGE(STATUS " Profile self blocks initial status = ${EASY_OPTION_PROFILE_SELF_BLOCKS_ON}") -if(WIN32) - MESSAGE(STATUS " Event tracing = ${EASY_OPTION_EVENT_TRACING}") - if(EASY_OPTION_LOW_PRIORITY_EVENT_TRACING) - MESSAGE(STATUS " Event tracing has low priority = Yes") - else() - MESSAGE(STATUS " Event tracing has low priority = No") - endif(EASY_OPTION_LOW_PRIORITY_EVENT_TRACING) -endif(WIN32) -MESSAGE(STATUS " Log messages = ${EASY_OPTION_LOG}") -MESSAGE(STATUS " Use EasyProfiler colors palette = ${EASY_OPTION_PREDEFINED_COLORS}") -MESSAGE(STATUS "END EASY_PROFILER OPTIONS.----------") -MESSAGE(STATUS "") -# END EasyProfiler options.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -add_definitions(-DEASY_DEFAULT_PORT=${EASY_DEFAULT_PORT}) -if(EASY_OPTION_LISTEN) - add_definitions(-DEASY_OPTION_START_LISTEN_ON_STARTUP=1) -else() - add_definitions(-DEASY_OPTION_START_LISTEN_ON_STARTUP=0) -endif(EASY_OPTION_LISTEN) - -if(EASY_OPTION_PROFILE_SELF) - add_definitions(-DEASY_OPTION_MEASURE_STORAGE_EXPAND=1) - if(EASY_OPTION_PROFILE_SELF_BLOCKS_ON) - add_definitions(-DEASY_OPTION_STORAGE_EXPAND_BLOCKS_ON=true) - else() - add_definitions(-DEASY_OPTION_STORAGE_EXPAND_BLOCKS_ON=false) - endif(EASY_OPTION_PROFILE_SELF_BLOCKS_ON) -else() - add_definitions(-DEASY_OPTION_MEASURE_STORAGE_EXPAND=0) -endif(EASY_OPTION_PROFILE_SELF) - -if(WIN32) - if(EASY_OPTION_EVENT_TRACING) - add_definitions(-DEASY_OPTION_EVENT_TRACING_ENABLED=true) - else() - add_definitions(-DEASY_OPTION_EVENT_TRACING_ENABLED=false) - endif(EASY_OPTION_EVENT_TRACING) - if(EASY_OPTION_LOW_PRIORITY_EVENT_TRACING) - add_definitions(-DEASY_OPTION_LOW_PRIORITY_EVENT_TRACING=true) - else() - add_definitions(-DEASY_OPTION_LOW_PRIORITY_EVENT_TRACING=false) - endif(EASY_OPTION_LOW_PRIORITY_EVENT_TRACING) -endif(WIN32) - -if(EASY_OPTION_LOG) - add_definitions(-DEASY_OPTION_LOG_ENABLED=1) -else() - add_definitions(-DEASY_OPTION_LOG_ENABLED=0) -endif(EASY_OPTION_LOG) - -if(EASY_OPTION_PREDEFINED_COLORS) - add_definitions(-DEASY_OPTION_BUILTIN_COLORS=1) -else() - add_definitions(-DEASY_OPTION_BUILTIN_COLORS=0) -endif(EASY_OPTION_PREDEFINED_COLORS) +message(STATUS " Default listening port = ${EASY_DEFAULT_PORT}") +message(STATUS " Auto-start listening = ${EASY_OPTION_LISTEN}") +message(STATUS " Profile self = ${EASY_OPTION_PROFILE_SELF}") +message(STATUS " Profile self blocks initial status = ${EASY_OPTION_PROFILE_SELF_BLOCKS_ON}") +if (WIN32) + message(STATUS " Event tracing = ${EASY_OPTION_EVENT_TRACING}") + if (EASY_OPTION_LOW_PRIORITY_EVENT_TRACING) + message(STATUS " Event tracing has low priority = Yes") + else () + message(STATUS " Event tracing has low priority = No") + endif (EASY_OPTION_LOW_PRIORITY_EVENT_TRACING) +endif (WIN32) +message(STATUS " Log messages = ${EASY_OPTION_LOG}") +message(STATUS " Use EasyProfiler colors palette = ${EASY_OPTION_PREDEFINED_COLORS}") +message(STATUS " Library type: ${EASY_OPTION_LIB_TYPE}") +message(STATUS "------ END EASY_PROFILER OPTIONS -------") +message(STATUS "") set(CPP_FILES block.cpp @@ -147,27 +56,24 @@ set(CPP_FILES ) set(H_FILES - profile_manager.h spin_lock.h event_trace_win.h current_time.h ) -include_directories( - include -) set(INCLUDE_FILES - include/easy/profiler.h - include/easy/reader.h - include/easy/easy_net.h - include/easy/easy_socket.h - include/easy/easy_compiler_support.h - include/easy/profiler_aux.h - include/easy/profiler_colors.h - include/easy/reader.h - include/easy/serialized_block.h + include/easy/profiler.h + include/easy/reader.h + include/easy/easy_net.h + include/easy/easy_socket.h + include/easy/easy_compiler_support.h + include/easy/profiler_aux.h + include/easy/profiler_colors.h + include/easy/reader.h + include/easy/serialized_block.h ) + source_group(include FILES ${INCLUDE_FILES}) set(SOURCES @@ -175,44 +81,55 @@ set(SOURCES ${H_FILES} ${INCLUDE_FILES} ) -add_definitions( - -D_BUILD_PROFILER - -DBUILD_WITH_EASY_PROFILER + +add_library(easy_profiler ${EASY_OPTION_LIB_TYPE} ${SOURCES} resources.rc) +target_include_directories(easy_profiler PUBLIC + $ + $ # /include +) +target_compile_definitions(easy_profiler PRIVATE + -D_BUILD_PROFILER=1 #-DEASY_PROFILER_API_DISABLED # uncomment this to disable profiler api only (you will have to rebuild only easy_profiler) ) +target_compile_definitions(easy_profiler PUBLIC + -DEASY_PROFILER_VERSION_MAJOR=${EASY_PROGRAM_VERSION_MAJOR} + -DEASY_PROFILER_VERSION_MINOR=${EASY_PROGRAM_VERSION_MINOR} + -DEASY_PROFILER_VERSION_PATCH=${EASY_PROGRAM_VERSION_PATCH} + -DEASY_DEFAULT_PORT=${EASY_DEFAULT_PORT} + -DBUILD_WITH_EASY_PROFILER=1 +) -if(WIN32) - add_definitions( - -D_WINSOCK_DEPRECATED_NO_WARNINGS - -D_CRT_SECURE_NO_WARNINGS - ) -endif(WIN32) +easy_define_target_option(easy_profiler BUILD_WITH_CHRONO_STEADY_CLOCK EASY_CHRONO_STEADY_CLOCK) +easy_define_target_option(easy_profiler BUILD_WITH_CHRONO_HIGH_RESOLUTION_CLOCK EASY_CHRONO_HIGHRES_CLOCK) +easy_define_target_option(easy_profiler EASY_OPTION_LISTEN EASY_OPTION_START_LISTEN_ON_STARTUP) +easy_define_target_option(easy_profiler EASY_OPTION_PROFILE_SELF EASY_OPTION_MEASURE_STORAGE_EXPAND) +easy_define_target_option(easy_profiler EASY_OPTION_PROFILE_SELF_BLOCKS_ON EASY_OPTION_STORAGE_EXPAND_BLOCKS_ON) +if (WIN32) + easy_define_target_option(easy_profiler EASY_OPTION_EVENT_TRACING EASY_OPTION_EVENT_TRACING_ENABLED) + easy_define_target_option(easy_profiler EASY_OPTION_LOW_PRIORITY_EVENT_TRACING EASY_OPTION_LOW_PRIORITY_EVENT_TRACING) +endif () +easy_define_target_option(easy_profiler EASY_OPTION_LOG EASY_OPTION_LOG_ENABLED) +easy_define_target_option(easy_profiler EASY_OPTION_PREDEFINED_COLORS EASY_OPTION_BUILTIN_COLORS) -add_library(${LIB_NAME} SHARED ${SOURCES} resources.rc) +if (UNIX) + target_compile_options(easy_profiler PRIVATE -Wall -Wno-long-long -Wno-reorder -Wno-braced-scalar-init -pedantic -O3) + target_link_libraries(easy_profiler pthread) +elseif (WIN32) + target_compile_definitions(easy_profiler PRIVATE -D_WIN32_WINNT=0x0600 -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS) + target_link_libraries(easy_profiler ws2_32 psapi) +endif () if (MINGW) - add_definitions( - -D_WIN32_WINNT=0x0600 - -DSTRSAFE_NO_DEPRECATE - ) - set (PLATFORM_LIBS ${PLATFORM_LIBS} ws2_32 psapi) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -elseif (CMAKE_VERSION VERSION_LESS "3.1") - if (UNIX OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set (CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}") - endif (UNIX OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_definitions(easy_profiler PRIVATE -DSTRSAFE_NO_DEPRECATE) +endif () + +if (CMAKE_VERSION VERSION_LESS "3.1") + if (NOT MSVC) + target_compile_options(easy_profiler PUBLIC $<$:-std=gnu++11>) + endif () else () - set_target_properties(${LIB_NAME} PROPERTIES - CXX_STANDARD 11 - CXX_STANDARD_REQUIRED ON - ) -endif (MINGW) - -if(UNIX) - set(PLATFORM_LIBS ${PLATFORM_LIBS} pthread) -endif(UNIX) - -target_link_libraries(${LIB_NAME} ${PLATFORM_LIBS}) + set_target_properties(easy_profiler PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON) +endif () #### # Installation @@ -230,11 +147,11 @@ include(CMakePackageConfigHelpers) include(InstallRequiredSystemLibraries) write_basic_package_version_file( - "${version_config}" - VERSION - ${EASY_PRODUCT_VERSION_STRING} - COMPATIBILITY - SameMajorVersion + "${version_config}" + VERSION + ${EASY_PRODUCT_VERSION_STRING} + COMPATIBILITY + SameMajorVersion ) configure_package_config_file( @@ -266,12 +183,12 @@ install( install( TARGETS - ${LIB_NAME} - EXPORT - ${targets_export_name} + easy_profiler + EXPORT + ${targets_export_name} DESTINATION bin - INCLUDES DESTINATION "${include_install_dir}" + INCLUDES DESTINATION "${include_install_dir}" ) install( @@ -279,4 +196,4 @@ install( DESTINATION "${config_install_dir}" ) -target_compile_definitions(easy_profiler PUBLIC BUILD_WITH_EASY_PROFILER) +target_compile_definitions(easy_profiler PUBLIC ) diff --git a/easy_profiler_core/current_time.h b/easy_profiler_core/current_time.h index 5ca999e..c4e7422 100644 --- a/easy_profiler_core/current_time.h +++ b/easy_profiler_core/current_time.h @@ -48,18 +48,18 @@ The Apache License, Version 2.0 (the "License"); #if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER <= 1800 // std::chrono for MSVC2013 is broken - it has very low resolution of 16ms // restrict usage of std::chrono -# ifdef EASY_CHRONO_HIGHRES_CLOCK +# if EASY_CHRONO_HIGHRES_CLOCK # undef EASY_CHRONO_HIGHRES_CLOCK # endif -# ifdef EASY_CHRONO_STEADY_CLOCK +# if EASY_CHRONO_STEADY_CLOCK # undef EASY_CHRONO_STEADY_CLOCK # endif #endif -#if defined(EASY_CHRONO_HIGHRES_CLOCK) +#if EASY_CHRONO_HIGHRES_CLOCK # include # define EASY_CHRONO_CLOCK std::chrono::high_resolution_clock -#elif defined(EASY_CHRONO_STEADY_CLOCK) +#elif EASY_CHRONO_STEADY_CLOCK # include # define EASY_CHRONO_CLOCK std::chrono::steady_clock #elif defined(_WIN32) @@ -74,7 +74,7 @@ The Apache License, Version 2.0 (the "License"); static inline profiler::timestamp_t getCurrentTime() { -#if defined(EASY_CHRONO_HIGHRES_CLOCK) || defined(EASY_CHRONO_STEADY_CLOCK) +#if EASY_CHRONO_HIGHRES_CLOCK || EASY_CHRONO_STEADY_CLOCK return (profiler::timestamp_t)EASY_CHRONO_CLOCK::now().time_since_epoch().count(); #elif defined(_WIN32) //see https://msdn.microsoft.com/library/windows/desktop/dn553408(v=vs.85).aspx diff --git a/easy_profiler_core/version.info b/easy_profiler_core/version.info deleted file mode 100644 index f0bb29e..0000000 --- a/easy_profiler_core/version.info +++ /dev/null @@ -1 +0,0 @@ -1.3.0 diff --git a/profiler_gui/CMakeLists.txt b/profiler_gui/CMakeLists.txt index 4f80035..13ffade 100644 --- a/profiler_gui/CMakeLists.txt +++ b/profiler_gui/CMakeLists.txt @@ -1,7 +1,3 @@ -cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR) - -project(profiler_gui CXX) - #set(CMAKE_PREFIX_PATH f:/qt/5.5/5.6/msvc2013_64/lib/cmake) set(CMAKE_AUTOMOC ON) @@ -10,78 +6,48 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) find_package(Qt5Widgets) -if(Qt5Widgets_FOUND) - -if(NOT DEFINED EASY_PROGRAM_VERSION_MAJOR) - set(EASY_PROGRAM_VERSION_MAJOR 1) - set(EASY_PROGRAM_VERSION_MINOR 0) - set(EASY_PROGRAM_VERSION_PATCH 0) - set(EASY_PRODUCT_VERSION_STRING "1.0.0") -endif(NOT DEFINED EASY_PROGRAM_VERSION_MAJOR) - -add_definitions( - -DEASY_PROFILER_VERSION_MAJOR=${EASY_PROGRAM_VERSION_MAJOR} - -DEASY_PROFILER_VERSION_MINOR=${EASY_PROGRAM_VERSION_MINOR} - -DEASY_PROFILER_VERSION_PATCH=${EASY_PROGRAM_VERSION_PATCH} -) - -add_executable(${PROJECT_NAME} - main.cpp - blocks_graphics_view.h - blocks_graphics_view.cpp - blocks_tree_widget.h - blocks_tree_widget.cpp - descriptors_tree_widget.h - descriptors_tree_widget.cpp - easy_chronometer_item.h - easy_chronometer_item.cpp - easy_frame_rate_viewer.h - easy_frame_rate_viewer.cpp - easy_graphics_item.h - easy_graphics_item.cpp - easy_graphics_scrollbar.h - easy_graphics_scrollbar.cpp - easy_qtimer.h - easy_qtimer.cpp - globals.h - globals.cpp - globals_qobjects.cpp - main_window.h - main_window.cpp - tree_widget_item.h - tree_widget_item.cpp - tree_widget_loader.h - tree_widget_loader.cpp - resources.qrc - resources.rc -) - -if (MINGW) - add_definitions( - -D_WIN32_WINNT=0x0600 - -DSTRSAFE_NO_DEPRECATE +if (Qt5Widgets_FOUND) + if (NOT("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") AND WIN32) + set(APPLICATION_PLATFORM WIN32) + endif () + add_executable(profiler_gui ${APPLICATION_PLATFORM} + main.cpp + blocks_graphics_view.h + blocks_graphics_view.cpp + blocks_tree_widget.h + blocks_tree_widget.cpp + descriptors_tree_widget.h + descriptors_tree_widget.cpp + easy_chronometer_item.h + easy_chronometer_item.cpp + easy_frame_rate_viewer.h + easy_frame_rate_viewer.cpp + easy_graphics_item.h + easy_graphics_item.cpp + easy_graphics_scrollbar.h + easy_graphics_scrollbar.cpp + easy_qtimer.h + easy_qtimer.cpp + globals.h + globals.cpp + globals_qobjects.cpp + main_window.h + main_window.cpp + tree_widget_item.h + tree_widget_item.cpp + tree_widget_loader.h + tree_widget_loader.cpp + resources.qrc + resources.rc ) - set (SPECIAL_LIB ${SPECIAL_LIB} ws2_32 psapi) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -elseif (CMAKE_VERSION VERSION_LESS "3.1") - if (UNIX OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set (CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}") - endif (UNIX OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_link_libraries(profiler_gui Qt5::Widgets easy_profiler) + if (WIN32) + target_compile_definitions(profiler_gui PRIVATE -D_WIN32_WINNT=0x0600) + endif () + if (MINGW) + target_compile_definitions(profiler_gui PRIVATE -DSTRSAFE_NO_DEPRECATE) + endif () else () - set_target_properties(${PROJECT_NAME} PROPERTIES - CXX_STANDARD 11 - CXX_STANDARD_REQUIRED ON - ) -endif (MINGW) - -if(UNIX) - set(SPECIAL_LIB ${SPECIAL_LIB} pthread) -endif(UNIX) - -target_link_libraries(${PROJECT_NAME} Qt5::Widgets easy_profiler ${SPECIAL_LIB}) -else() - -message(STATUS "INFO\n\n\tQt5 not found! Generating EasyProfiler projects without GUI.\n") - -endif(Qt5Widgets_FOUND) + message(STATUS "INFO\n\n\tQt5 not found! Generating EasyProfiler projects without GUI.\n") +endif () diff --git a/reader/CMakeLists.txt b/reader/CMakeLists.txt index b362a98..903c910 100644 --- a/reader/CMakeLists.txt +++ b/reader/CMakeLists.txt @@ -1,21 +1,3 @@ -project(profiler_reader) -set(CPP_FILES - main.cpp -) - -set(SOURCES - ${CPP_FILES} -) - -add_executable(${PROJECT_NAME} ${SOURCES}) - -if(MINGW OR UNIX) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") -endif(MINGW OR UNIX) - -if(UNIX) - set(SPEC_LIB ${SPEC_LIB} pthread) -endif(UNIX) - -target_link_libraries(${PROJECT_NAME} easy_profiler ${SPEC_LIB}) +add_executable(profiler_reader main.cpp) +target_link_libraries(profiler_reader easy_profiler) diff --git a/sample/CMakeLists.txt b/sample/CMakeLists.txt index eb0257d..dbc31a3 100644 --- a/sample/CMakeLists.txt +++ b/sample/CMakeLists.txt @@ -1,6 +1,3 @@ -cmake_minimum_required(VERSION 2.8) -project(profiler_sample CXX) - set(CPP_FILES main.cpp ) @@ -9,47 +6,11 @@ set(SOURCES ${CPP_FILES} ) -include_directories( - ../easy_profiler_core/include -) link_directories(${CMAKE_SOURCE_DIR}/../bin) -add_executable(${PROJECT_NAME} ${SOURCES}) +add_executable(profiler_sample ${SOURCES}) +target_link_libraries(profiler_sample easy_profiler) -set(DISABLED_PROFILER_NAME - "${PROJECT_NAME}_disabled_profiler" -) -add_executable(${DISABLED_PROFILER_NAME} ${SOURCES}) - -if (MINGW) - - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") - -elseif (CMAKE_VERSION VERSION_LESS "3.1") - - if (UNIX OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") - endif (UNIX OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - -else () - - set_target_properties(${PROJECT_NAME} PROPERTIES - CXX_STANDARD 11 - CXX_STANDARD_REQUIRED ON - ) - - set_target_properties(${DISABLED_PROFILER_NAME} PROPERTIES - CXX_STANDARD 11 - CXX_STANDARD_REQUIRED ON - ) - -endif (MINGW) - -if(UNIX) - set(SPEC_LIB ${SPEC_LIB} pthread) -endif(UNIX) - -target_link_libraries(${PROJECT_NAME} easy_profiler ${SPEC_LIB}) -target_link_libraries(${DISABLED_PROFILER_NAME} easy_profiler ${SPEC_LIB}) - -target_compile_definitions(${PROJECT_NAME} PRIVATE BUILD_WITH_EASY_PROFILER) +add_executable(profiler_sample_disabled_profiler ${SOURCES}) +target_link_libraries(profiler_sample_disabled_profiler easy_profiler) +target_compile_definitions(profiler_sample_disabled_profiler PRIVATE DISABLE_EASY_PROFILER)