From 70da99e4f70845da37ae368c4788ecc18546792d Mon Sep 17 00:00:00 2001
From: Egor Tensin <Egor.Tensin@gmail.com>
Date: Sat, 28 Mar 2020 17:19:43 +0000
Subject: WIP: restructure

A stupid attempt to reduce code duplication led me to believe that all
the scripts could use _a bit_ of refactoring.
This is going to be a major pain (factoring out all the things), which
I'll take gladly.
All the links and usage examples are broken right now, but nobody cares,
so whatevs.
---
 examples/dynamic/CMakeLists.txt | 16 ++++++++++++++++
 examples/dynamic/baz.cpp        |  7 +++++++
 examples/dynamic/baz.hpp        |  9 +++++++++
 examples/dynamic/foo.cpp        |  6 ++++++
 4 files changed, 38 insertions(+)
 create mode 100644 examples/dynamic/CMakeLists.txt
 create mode 100644 examples/dynamic/baz.cpp
 create mode 100644 examples/dynamic/baz.hpp
 create mode 100644 examples/dynamic/foo.cpp

(limited to 'examples/dynamic')

diff --git a/examples/dynamic/CMakeLists.txt b/examples/dynamic/CMakeLists.txt
new file mode 100644
index 0000000..4602adb
--- /dev/null
+++ b/examples/dynamic/CMakeLists.txt
@@ -0,0 +1,16 @@
+cmake_minimum_required(VERSION 3.1)
+
+project(example_dynamic)
+
+include(../../common.cmake)
+
+add_library(baz SHARED baz.cpp)
+target_include_directories(baz PUBLIC .)
+
+add_executable(foo foo.cpp)
+target_link_libraries(foo PRIVATE baz)
+
+install(TARGETS foo baz RUNTIME DESTINATION bin LIBRARY DESTINATION lib)
+if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+    install(FILES "$<TARGET_PDB_FILE:foo>" "$<TARGET_PDB_FILE:baz>" DESTINATION bin OPTIONAL)
+endif()
diff --git a/examples/dynamic/baz.cpp b/examples/dynamic/baz.cpp
new file mode 100644
index 0000000..d108ae3
--- /dev/null
+++ b/examples/dynamic/baz.cpp
@@ -0,0 +1,7 @@
+#include "baz.hpp"
+
+#include <iostream>
+
+void baz() {
+    std::cout << "baz\n";
+}
diff --git a/examples/dynamic/baz.hpp b/examples/dynamic/baz.hpp
new file mode 100644
index 0000000..2fc9b2a
--- /dev/null
+++ b/examples/dynamic/baz.hpp
@@ -0,0 +1,9 @@
+#pragma once
+
+#ifdef _MSC_VER
+#define DLLEXPORT __declspec(dllexport)
+#else
+#define DLLEXPORT
+#endif
+
+DLLEXPORT void baz();
diff --git a/examples/dynamic/foo.cpp b/examples/dynamic/foo.cpp
new file mode 100644
index 0000000..b7d9986
--- /dev/null
+++ b/examples/dynamic/foo.cpp
@@ -0,0 +1,6 @@
+#include <baz.hpp>
+
+int main() {
+    baz();
+    return 0;
+}
-- 
cgit v1.2.3