changeset 512:1b8a1c43893e laaw

compilation of the dll 32/64
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 18 Jul 2013 12:36:02 +0200
parents d87febb5f183
children a3d9acf37161
files OrthancCppClient/Package/CMakeLists.txt OrthancCppClient/Package/OrthancCppClient.cmake OrthancCppClient/Package/Test.sh OrthancCppClient/Package/Test/Basic/CMakeLists.txt OrthancCppClient/Package/Test/Basic/main.cpp OrthancCppClient/Package/Test/Vtk/CMakeLists.txt OrthancCppClient/Package/Test/Vtk/main.cpp
diffstat 7 files changed, 155 insertions(+), 59 deletions(-) [+]
line wrap: on
line diff
--- a/OrthancCppClient/Package/CMakeLists.txt	Thu Jul 18 12:11:33 2013 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-# nm -C -D --defined-only libOrthancCppClient.so 
-
-
-cmake_minimum_required(VERSION 2.8)
-
-project(OrthancCppClientTest)
-
-include_directories(${CMAKE_SOURCE_DIR}/Laaw)
-
-set(STATIC_BUILD ON)
-set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../..)
-
-include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake)
-include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake)
-
-if (${CMAKE_COMPILER_IS_GNUCXX})
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -Wno-implicit-function-declaration")  # --std=c99 makes libcurl not to compile
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wno-long-long -Wno-variadic-macros")
-  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
-  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
-elseif (${MSVC})
-  add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)  
-endif()
-
-add_library(OrthancCppClient SHARED
-  SharedLibrary.cpp
-  ${THIRD_PARTY_SOURCES}
-  ${ORTHANC_ROOT}/Core/OrthancException.cpp
-  ${ORTHANC_ROOT}/Core/Enumerations.cpp
-  ${ORTHANC_ROOT}/Core/Toolbox.cpp
-  ${ORTHANC_ROOT}/Core/HttpClient.cpp
-  ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp
-  ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp
-  ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp
-  ${ORTHANC_ROOT}/Core/FileFormats/PngReader.cpp
-  ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp
-  ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp
-  ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp
-  ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp
-  ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp
-  ${ORTHANC_ROOT}/Resources/sha1/sha1.cpp
-  ${ORTHANC_ROOT}/Resources/md5/md5.c
-  ${ORTHANC_ROOT}/Resources/base64/base64.cpp
-  )
-
-if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
-  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/Laaw/VersionScript.map")
-  target_link_libraries(OrthancCppClient pthread)
-else()
-  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++")
-  target_link_libraries(OrthancCppClient ws2_32)
-endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancCppClient/Package/OrthancCppClient.cmake	Thu Jul 18 12:36:02 2013 +0200
@@ -0,0 +1,60 @@
+# nm -C -D --defined-only libOrthancCppClient.so 
+
+include_directories(${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw)
+
+set(STATIC_BUILD ON)
+include(${ORTHANC_ROOT}/Resources/CMake/DownloadPackage.cmake)
+include(${ORTHANC_ROOT}/Resources/CMake/JsonCppConfiguration.cmake)
+include(${ORTHANC_ROOT}/Resources/CMake/LibCurlConfiguration.cmake)
+include(${ORTHANC_ROOT}/Resources/CMake/LibPngConfiguration.cmake)
+include(${ORTHANC_ROOT}/Resources/CMake/BoostConfiguration.cmake)
+include(${ORTHANC_ROOT}/Resources/CMake/ZlibConfiguration.cmake)
+
+if (${CMAKE_COMPILER_IS_GNUCXX})
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic -Wno-implicit-function-declaration")  # --std=c99 makes libcurl not to compile
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic -Wno-long-long -Wno-variadic-macros")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
+elseif (${MSVC})
+  add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)  
+endif()
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
+  if (${CMAKE_SIZEOF_VOID_P} EQUAL 4)
+    set(WINDOWS_DEF ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows32.def)
+  elseif (${CMAKE_SIZEOF_VOID_P} EQUAL 8)
+    set(WINDOWS_DEF ${ORTHANC_ROOT}/OrthancCppClient/Package/Build/Windows64.def)
+  else()
+    message(FATAL_ERROR "Support your platform here")
+  endif()
+endif()
+
+add_library(OrthancCppClient SHARED
+  ${THIRD_PARTY_SOURCES}
+  ${ORTHANC_ROOT}/Core/OrthancException.cpp
+  ${ORTHANC_ROOT}/Core/Enumerations.cpp
+  ${ORTHANC_ROOT}/Core/Toolbox.cpp
+  ${ORTHANC_ROOT}/Core/HttpClient.cpp
+  ${ORTHANC_ROOT}/Core/MultiThreading/ArrayFilledByThreads.cpp
+  ${ORTHANC_ROOT}/Core/MultiThreading/ThreadedCommandProcessor.cpp
+  ${ORTHANC_ROOT}/Core/MultiThreading/SharedMessageQueue.cpp
+  ${ORTHANC_ROOT}/Core/FileFormats/PngReader.cpp
+  ${ORTHANC_ROOT}/OrthancCppClient/OrthancConnection.cpp
+  ${ORTHANC_ROOT}/OrthancCppClient/Series.cpp
+  ${ORTHANC_ROOT}/OrthancCppClient/Study.cpp
+  ${ORTHANC_ROOT}/OrthancCppClient/Instance.cpp
+  ${ORTHANC_ROOT}/OrthancCppClient/Patient.cpp
+  ${ORTHANC_ROOT}/OrthancCppClient/Package/SharedLibrary.cpp
+  ${ORTHANC_ROOT}/Resources/sha1/sha1.cpp
+  ${ORTHANC_ROOT}/Resources/md5/md5.c
+  ${ORTHANC_ROOT}/Resources/base64/base64.cpp
+  ${WINDOWS_DEF}
+  )
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--version-script=${ORTHANC_ROOT}/OrthancCppClient/Package/Laaw/VersionScript.map")
+  target_link_libraries(OrthancCppClient pthread)
+else()
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++")
+  target_link_libraries(OrthancCppClient ws2_32)
+endif()
--- a/OrthancCppClient/Package/Test.sh	Thu Jul 18 12:11:33 2013 +0200
+++ b/OrthancCppClient/Package/Test.sh	Thu Jul 18 12:36:02 2013 +0200
@@ -6,4 +6,6 @@
 ${LAAW_ROOT}/Parser/Build/LaawParser.exe Build/CodeModelRaw.json ../OrthancConnection.h -I`pwd`/../../s/jsoncpp-src-0.6.0-rc2/include -fms-extensions && \
     python ${LAAW_ROOT}/Generators/CodeModelPostProcessing.py Build/CodeModel.json Build/CodeModelRaw.json Product.json && \
     python ${LAAW_ROOT}/Generators/GenerateWrapperCpp.py Build/OrthancClient.h Build/CodeModel.json Product.json ConfigurationCpp.json && \
-    python ${LAAW_ROOT}/Generators/GenerateExternC.py Build/ExternC.cpp Build/CodeModel.json Product.json
+    python ${LAAW_ROOT}/Generators/GenerateExternC.py Build/ExternC.cpp Build/CodeModel.json Product.json && \
+    python ${LAAW_ROOT}/Generators/GenerateWindows32Def.py Build/Windows32.def Build/CodeModel.json && \
+    python ${LAAW_ROOT}/Generators/GenerateWindows64Def.py Build/Windows64.def Build/CodeModel.json
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancCppClient/Package/Test/Basic/CMakeLists.txt	Thu Jul 18 12:36:02 2013 +0200
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(OrthancCppClientTest)
+
+set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../../../..)
+include(../../OrthancCppClient.cmake)
+
+add_executable(Test main.cpp)
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+  target_link_libraries(Test dl)
+else()
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
+endif()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OrthancCppClient/Package/Test/Basic/main.cpp	Thu Jul 18 12:36:02 2013 +0200
@@ -0,0 +1,75 @@
+/**
+ * Orthanc - A Lightweight, RESTful DICOM Store
+ * Copyright (C) 2012-2013 Medical Physics Department, CHU of Liege,
+ * Belgium
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ **/
+
+
+#include <iostream>
+
+#include "../../Build/OrthancClient.h"
+
+int main()
+{
+  try
+  {
+#ifdef _WIN32
+    OrthancClient::Initialize("libOrthancCppClient.dll");
+#else
+    OrthancClient::Initialize("libOrthancCppClient.so");
+#endif
+
+    // Display the content of the local Orthanc instance
+    OrthancClient::OrthancConnection orthanc("http://localhost:8042");
+
+    for (unsigned int i = 0; i < orthanc.GetPatientCount(); i++)
+    {
+      OrthancClient::Patient patient = orthanc.GetPatient(i);
+      std::cout << "Patient: " << patient.GetId() << std::endl;
+
+      for (unsigned int j = 0; j < patient.GetStudyCount(); j++)
+      {
+        OrthancClient::Study study = patient.GetStudy(j);
+        std::cout << "  Study: " << study.GetId() << std::endl;
+
+        for (unsigned int k = 0; k < study.GetSeriesCount(); k++)
+        {
+          OrthancClient::Series series = study.GetSeries(k);
+          std::cout << "    Series: " << series.GetId() << std::endl;
+
+          for (unsigned int l = 0; l < series.GetInstanceCount(); l++)
+          {
+            std::cout << "      Instance: " << series.GetInstance(l).GetId() << std::endl;
+          }
+        }
+      }
+    }
+
+    return 0;
+  }
+  catch (OrthancClient::OrthancClientException e)
+  {
+    std::cerr << "EXCEPTION: [" << e.What() << "]" << std::endl;
+    return -1;
+  }
+}
--- a/OrthancCppClient/Package/Test/Vtk/CMakeLists.txt	Thu Jul 18 12:11:33 2013 +0200
+++ b/OrthancCppClient/Package/Test/Vtk/CMakeLists.txt	Thu Jul 18 12:36:02 2013 +0200
@@ -2,6 +2,9 @@
 
 project(OrthancCppClientTest)
 
+set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../../../..)
+include(../../OrthancCppClient.cmake)
+
 find_package(VTK REQUIRED)
 include(${VTK_USE_FILE})
 
--- a/OrthancCppClient/Package/Test/Vtk/main.cpp	Thu Jul 18 12:11:33 2013 +0200
+++ b/OrthancCppClient/Package/Test/Vtk/main.cpp	Thu Jul 18 12:36:02 2013 +0200
@@ -139,8 +139,6 @@
     // Try and find a 3D image inside the local store
     OrthancClient::OrthancConnection orthanc("http://localhost:8042");
 
-    printf(">> %d\n", orthanc.GetPatientCount());
-
     for (unsigned int i = 0; i < orthanc.GetPatientCount(); i++)
     {
       OrthancClient::Patient patient = orthanc.GetPatient(i);