diff options
Diffstat (limited to 'examples/dynamic')
-rw-r--r-- | examples/dynamic/CMakeLists.txt | 16 | ||||
-rw-r--r-- | examples/dynamic/baz.cpp | 7 | ||||
-rw-r--r-- | examples/dynamic/baz.hpp | 9 | ||||
-rw-r--r-- | examples/dynamic/foo.cpp | 6 |
4 files changed, 38 insertions, 0 deletions
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; +} |