From 6a51be172afed68333896a62e7c6214d25e709e2 Mon Sep 17 00:00:00 2001 From: Chunting Gu Date: Thu, 18 Oct 2018 11:21:15 +0800 Subject: [PATCH] Automatically install VLD to example output folder. --- CMakeLists.txt | 38 +++++++++--------- example/rest_book_client/CMakeLists.txt | 8 ++++ example/rest_book_client/main.cc | 5 --- example/rest_book_server/CMakeLists.txt | 8 ++++ example/rest_book_server/main.cc | 5 --- example/soap_book_client/CMakeLists.txt | 8 ++++ example/soap_book_client/main.cc | 8 ++++ example/soap_book_server/CMakeLists.txt | 8 ++++ example/soap_book_server/main.cc | 8 ++++ .../vld}/Microsoft.DTfW.DHL.manifest | 0 .../win32/bin/{ => debug/vld}/dbghelp.dll | Bin .../win32/bin/{ => debug/vld}/vld_x86.dll | Bin 12 files changed, 68 insertions(+), 28 deletions(-) rename third_party/win32/bin/{ => debug/vld}/Microsoft.DTfW.DHL.manifest (100%) rename third_party/win32/bin/{ => debug/vld}/dbghelp.dll (100%) rename third_party/win32/bin/{ => debug/vld}/vld_x86.dll (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index df1632a..7953d54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,44 +124,46 @@ endif() # For including its own headers as "webcc/http_client.h". include_directories(${PROJECT_SOURCE_DIR}) +set(THIRD_PARTY_DIR ${PROJECT_SOURCE_DIR}/third_party) + if(WIN32) - include_directories(${PROJECT_SOURCE_DIR}/third_party/win32/include) - link_directories(${PROJECT_SOURCE_DIR}/third_party/win32/lib) + include_directories(${THIRD_PARTY_DIR}/win32/include) + link_directories(${THIRD_PARTY_DIR}/win32/lib) endif() # SOAP support needs pugixml to parse and create XML. if(WEBCC_ENABLE_SOAP) - add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/src/pugixml) + add_subdirectory(${THIRD_PARTY_DIR}/src/pugixml) # For including pugixml as "pugixml/pugixml.hpp". - include_directories(${PROJECT_SOURCE_DIR}/third_party/src) + include_directories(${THIRD_PARTY_DIR}/src) endif() add_subdirectory(webcc) if(WEBCC_BUILD_EXAMPLE) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/http_hello_client) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/http_hello_async_client) + add_subdirectory(example/http_hello_client) + add_subdirectory(example/http_hello_async_client) # REST example needs jsoncpp to parse and create JSON. - add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/src/jsoncpp) - include_directories(${PROJECT_SOURCE_DIR}/third_party/src/jsoncpp) + add_subdirectory(${THIRD_PARTY_DIR}/src/jsoncpp) + include_directories(${THIRD_PARTY_DIR}/src/jsoncpp) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/rest_book_server) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/rest_book_client) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/rest_book_async_client) + add_subdirectory(example/rest_book_server) + add_subdirectory(example/rest_book_client) + add_subdirectory(example/rest_book_async_client) if(WEBCC_ENABLE_SOAP) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/soap_calc_server) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/soap_calc_client) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/soap_calc_client_parasoft) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/soap_book_server) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/soap_book_client) + add_subdirectory(example/soap_calc_server) + add_subdirectory(example/soap_calc_client) + add_subdirectory(example/soap_calc_client_parasoft) + add_subdirectory(example/soap_book_server) + add_subdirectory(example/soap_book_client) endif() if(WEBCC_ENABLE_SSL) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/http_ssl_client) - add_subdirectory(${PROJECT_SOURCE_DIR}/example/rest_github_client) + add_subdirectory(example/http_ssl_client) + add_subdirectory(example/rest_github_client) endif() endif() diff --git a/example/rest_book_client/CMakeLists.txt b/example/rest_book_client/CMakeLists.txt index 490990a..b934029 100644 --- a/example/rest_book_client/CMakeLists.txt +++ b/example/rest_book_client/CMakeLists.txt @@ -11,3 +11,11 @@ add_executable(${TARGET_NAME} ${SRCS}) target_link_libraries(${TARGET_NAME} webcc jsoncpp ${Boost_LIBRARIES}) target_link_libraries(${TARGET_NAME} "${CMAKE_THREAD_LIBS_INIT}") + +# Install VLD DLLs to build dir so that the example can be launched from +# inside VS. +if(WEBCC_ENABLE_VLD) + install(DIRECTORY ${THIRD_PARTY_DIR}/win32/bin/debug/vld/ + CONFIGURATIONS Debug + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/Debug) +endif() diff --git a/example/rest_book_client/main.cc b/example/rest_book_client/main.cc index b85f578..01e4078 100644 --- a/example/rest_book_client/main.cc +++ b/example/rest_book_client/main.cc @@ -9,11 +9,6 @@ #include "example/common/book.h" #include "example/common/book_json.h" -// In order to run with VLD, please copy the following files to the example -// output folder from "third_party\win32\bin": -// - dbghelp.dll -// - Microsoft.DTfW.DHL.manifest -// - vld_x86.dll #if (defined(WIN32) || defined(_WIN64)) #if defined(_DEBUG) && defined(WEBCC_ENABLE_VLD) #pragma message ("< include vld.h >") diff --git a/example/rest_book_server/CMakeLists.txt b/example/rest_book_server/CMakeLists.txt index 91c8ac3..9b89095 100644 --- a/example/rest_book_server/CMakeLists.txt +++ b/example/rest_book_server/CMakeLists.txt @@ -13,3 +13,11 @@ add_executable(${TARGET_NAME} ${SRCS}) target_link_libraries(${TARGET_NAME} webcc jsoncpp ${Boost_LIBRARIES}) target_link_libraries(${TARGET_NAME} "${CMAKE_THREAD_LIBS_INIT}") + +# Install VLD DLLs to build dir so that the example can be launched from +# inside VS. +if(WEBCC_ENABLE_VLD) + install(DIRECTORY ${THIRD_PARTY_DIR}/win32/bin/debug/vld/ + CONFIGURATIONS Debug + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/Debug) +endif() diff --git a/example/rest_book_server/main.cc b/example/rest_book_server/main.cc index 32f6d73..f4d7766 100644 --- a/example/rest_book_server/main.cc +++ b/example/rest_book_server/main.cc @@ -5,11 +5,6 @@ #include "example/rest_book_server/services.h" -// In order to run with VLD, please copy the following files to the example -// output folder from "third_party\win32\bin": -// - dbghelp.dll -// - Microsoft.DTfW.DHL.manifest -// - vld_x86.dll #if (defined(WIN32) || defined(_WIN64)) #if defined(_DEBUG) && defined(WEBCC_ENABLE_VLD) #pragma message ("< include vld.h >") diff --git a/example/soap_book_client/CMakeLists.txt b/example/soap_book_client/CMakeLists.txt index 68860f2..8d30720 100644 --- a/example/soap_book_client/CMakeLists.txt +++ b/example/soap_book_client/CMakeLists.txt @@ -13,3 +13,11 @@ add_executable(${TARGET_NAME} ${SRCS}) target_link_libraries(${TARGET_NAME} webcc pugixml ${Boost_LIBRARIES}) target_link_libraries(${TARGET_NAME} "${CMAKE_THREAD_LIBS_INIT}") + +# Install VLD DLLs to build dir so that the example can be launched from +# inside VS. +if(WEBCC_ENABLE_VLD) + install(DIRECTORY ${THIRD_PARTY_DIR}/win32/bin/debug/vld/ + CONFIGURATIONS Debug + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/Debug) +endif() diff --git a/example/soap_book_client/main.cc b/example/soap_book_client/main.cc index 87e072e..6c21e60 100644 --- a/example/soap_book_client/main.cc +++ b/example/soap_book_client/main.cc @@ -4,6 +4,14 @@ #include "example/soap_book_client/book_client.h" +#if (defined(WIN32) || defined(_WIN64)) +#if defined(_DEBUG) && defined(WEBCC_ENABLE_VLD) +#pragma message ("< include vld.h >") +#include "vld/vld.h" +#pragma comment(lib, "vld") +#endif +#endif + void Help(const char* argv0) { std::cout << "Usage: " << argv0 << " " << std::endl; std::cout << " E.g.," << std::endl; diff --git a/example/soap_book_server/CMakeLists.txt b/example/soap_book_server/CMakeLists.txt index 9df6349..7fed802 100644 --- a/example/soap_book_server/CMakeLists.txt +++ b/example/soap_book_server/CMakeLists.txt @@ -13,3 +13,11 @@ add_executable(${TARGET_NAME} ${SRCS}) target_link_libraries(${TARGET_NAME} webcc pugixml ${Boost_LIBRARIES}) target_link_libraries(${TARGET_NAME} "${CMAKE_THREAD_LIBS_INIT}") + +# Install VLD DLLs to build dir so that the example can be launched from +# inside VS. +if(WEBCC_ENABLE_VLD) + install(DIRECTORY ${THIRD_PARTY_DIR}/win32/bin/debug/vld/ + CONFIGURATIONS Debug + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/Debug) +endif() diff --git a/example/soap_book_server/main.cc b/example/soap_book_server/main.cc index 610112f..0f73345 100644 --- a/example/soap_book_server/main.cc +++ b/example/soap_book_server/main.cc @@ -5,6 +5,14 @@ #include "example/soap_book_server/book_service.h" +#if (defined(WIN32) || defined(_WIN64)) +#if defined(_DEBUG) && defined(WEBCC_ENABLE_VLD) +#pragma message ("< include vld.h >") +#include "vld/vld.h" +#pragma comment(lib, "vld") +#endif +#endif + void Help(const char* argv0) { std::cout << "Usage: " << argv0 << " " << std::endl; std::cout << " E.g.," << std::endl; diff --git a/third_party/win32/bin/Microsoft.DTfW.DHL.manifest b/third_party/win32/bin/debug/vld/Microsoft.DTfW.DHL.manifest similarity index 100% rename from third_party/win32/bin/Microsoft.DTfW.DHL.manifest rename to third_party/win32/bin/debug/vld/Microsoft.DTfW.DHL.manifest diff --git a/third_party/win32/bin/dbghelp.dll b/third_party/win32/bin/debug/vld/dbghelp.dll similarity index 100% rename from third_party/win32/bin/dbghelp.dll rename to third_party/win32/bin/debug/vld/dbghelp.dll diff --git a/third_party/win32/bin/vld_x86.dll b/third_party/win32/bin/debug/vld/vld_x86.dll similarity index 100% rename from third_party/win32/bin/vld_x86.dll rename to third_party/win32/bin/debug/vld/vld_x86.dll