diff --git a/CMakeLists.txt b/CMakeLists.txt index 36b92cc8..1e7e6ae9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,6 @@ cmake_minimum_required(VERSION 2.8.9) include(cmake/add_files.cmake) include(cmake/create_source_groups.cmake) - # Variables -------------------------------------------------------------------- set(PROJECT_NAME masterproject) @@ -12,6 +11,10 @@ set(APP_PROJECT_NAME "${PROJECT_NAME}_app") set(LIB_PROJECT_NAME "${PROJECT_NAME}_lib") set(TEST_PROJECT_NAME "${PROJECT_NAME}_test") +if (WIN32) + set(PLATFORM_INCLUDES "#include \"includesWindows.h\"") + LINK_DIRECTORIES($ENV{VLD_DIR}/lib/Win32) # this adds the library path for VLD, must be done before the project target is created +endif() # Settings --------------------------------------------------------------------- @@ -38,15 +41,17 @@ add_library(${LIB_PROJECT_NAME} ${LIB_FILES}) create_source_groups(${LIB_FILES}) -set_target_properties( ${LIB_PROJECT_NAME} - PROPERTIES DEBUG_OUTPUT_NAME ${PROJECT_NAME}_d - RELEASE_OUTPUT_NAME ${PROJECT_NAME}) +set_target_properties( + ${LIB_PROJECT_NAME} + PROPERTIES DEBUG_OUTPUT_NAME ${PROJECT_NAME}_d + RELEASE_OUTPUT_NAME ${PROJECT_NAME} +) # App -------------------------------------------------------------------------- add_subdirectory(src/app) -include_directories(src/lib src/app) +include_directories(src/lib src/app build/src/app) # Find includes in corresponding build directories @@ -59,7 +64,6 @@ set(CMAKE_PREFIX_PATH "$ENV{QT_DIR}/") find_package(Qt5Widgets) - add_executable(${APP_PROJECT_NAME} ${APP_FILES}) create_source_groups(${APP_FILES}) @@ -69,10 +73,14 @@ target_link_libraries(${APP_PROJECT_NAME} ${LIB_PROJECT_NAME}) # Use the Widgets module from Qt 5. qt5_use_modules(${APP_PROJECT_NAME} Widgets) +# configure platform specific include file +configure_file( + "${PROJECT_SOURCE_DIR}/src/app/includes.h.in" + "${PROJECT_SOURCE_DIR}/build/src/app/includes.h" +) set(CMAKE_AUTOMOC OFF) - # CxxTest ---------------------------------------------------------------------- add_subdirectory(src/test) @@ -99,25 +107,40 @@ target_link_libraries(${TEST_PROJECT_NAME} ${LIB_PROJECT_NAME}) if (WIN32) - add_custom_command(TARGET ${TEST_PROJECT_NAME} - PRE_BUILD - COMMAND ${PYTHON_EXECUTABLE} ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE} --runner=ParenPrinter -o ${TESTGEN_FILE} ${PROJECT_SOURCE_DIR}/src/test/*.h - COMMENT "Generating unittest code with cxxtestgen") + add_custom_command( + TARGET ${TEST_PROJECT_NAME} + PRE_BUILD + COMMAND ${PYTHON_EXECUTABLE} ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE} --runner=ParenPrinter -o ${TESTGEN_FILE} ${PROJECT_SOURCE_DIR}/src/test/*.h + COMMENT "Generating unittest code with cxxtestgen" + ) - add_custom_command(TARGET ${TEST_PROJECT_NAME} - POST_BUILD - COMMAND $(OutDir)$(TargetName)$(TargetExt) - COMMENT "Running unittest code") + add_custom_command( + TARGET ${TEST_PROJECT_NAME} + POST_BUILD + COMMAND $(OutDir)$(TargetName)$(TargetExt) + COMMENT "Running unittest code" + ) elseif (UNIX) - add_custom_command(OUTPUT ${TESTGEN_FILE} - PRE_BUILD - COMMAND ${PYTHON_EXECUTABLE} ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE} --runner=ParenPrinter -o ${TESTGEN_FILE} ${PROJECT_SOURCE_DIR}/src/test/*.h - COMMENT "Generating unittest code with cxxtestgen") + + add_custom_command( + OUTPUT ${TESTGEN_FILE} + PRE_BUILD + COMMAND ${PYTHON_EXECUTABLE} ${CXXTEST_PYTHON_TESTGEN_EXECUTABLE} --runner=ParenPrinter -o ${TESTGEN_FILE} ${PROJECT_SOURCE_DIR}/src/test/*.h + COMMENT "Generating unittest code with cxxtestgen" + ) add_custom_target(gen DEPENDS ${TESTGEN_FILE}) add_dependencies(${TEST_PROJECT_NAME} gen) endif () + +# Visual Leak Detector --------------------------------------------------------- + +if (WIN32) + + include_directories($ENV{VLD_DIR}/include) + +endif() diff --git a/README.md b/README.md index ddcf14c7..d94520d1 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,9 @@ * QT_DIR - ...\Qt\Qt5.2.1\5.2.1\\ * CXX_TEST_DIR - .../cxxtest-4.3/ +For Win32: +* VLD_DIR - .../Visual Leak Detector + ##### Settings Run setup script: diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index 8a380b38..d9b6b9a4 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -3,6 +3,7 @@ add_files( qt/QtElementFactory.cpp qt/QtElementFactory.h - + + includesWindows.h main.cpp ) diff --git a/src/app/includes.h.in b/src/app/includes.h.in new file mode 100644 index 00000000..5ccc1844 --- /dev/null +++ b/src/app/includes.h.in @@ -0,0 +1,7 @@ +#ifndef INCLUDES_H +#define INCLUDES_H + +// platform specific includes +@PLATFORM_INCLUDES@ + +#endif // INCLUDES_H diff --git a/src/app/includesWindows.h b/src/app/includesWindows.h new file mode 100644 index 00000000..0f6f0018 --- /dev/null +++ b/src/app/includesWindows.h @@ -0,0 +1,6 @@ +#ifndef INCLUDES_WINDOWS_H +#define INCLUDES_WINDOWS_H + +#include "vld.h" + +#endif // INCLUDES_WINDOWS_H diff --git a/src/app/main.cpp b/src/app/main.cpp index 94aacbfb..75100ef0 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -4,6 +4,7 @@ #include #include "Application.h" +#include "includes.h" #include "qt/QtElementFactory.h" int main(int argv, char **args)