Browse Source

ENH: Configure location of plugin files so that the executable can run with any current working directory.

Brad King 19 years ago
parent
commit
c1a6e4dcc6

+ 7 - 0
Tests/Plugin/CMakeLists.txt

@@ -11,6 +11,13 @@ SET(KWSYS_NAMESPACE kwsys)
 SET(KWSYS_HEADER_ROOT ${Plugin_BINARY_DIR}/include)
 SET(KWSYS_USE_DynamicLoader 1)
 ADD_SUBDIRECTORY(${Plugin_SOURCE_DIR}/../../Source/kwsys src/kwsys)
+
+# Configure the location of plugins.
+CONFIGURE_FILE(${Plugin_SOURCE_DIR}/src/example_exe.h.in
+               ${Plugin_BINARY_DIR}/include/example_exe.h @ONLY)
+
+# We need to include headers from the source tree and configured
+# headers in the build tree.
 INCLUDE_DIRECTORIES(
   ${Plugin_BINARY_DIR}/include
   ${Plugin_SOURCE_DIR}/include

+ 3 - 1
Tests/Plugin/src/example_exe.cxx

@@ -1,5 +1,7 @@
 #include <example.h>
 
+#include <example_exe.h>
+
 #include <kwsys/DynamicLoader.hxx>
 #include <kwsys/ios/iostream>
 #include <kwsys/stl/string>
@@ -21,7 +23,7 @@ extern "C" int example_exe_function()
 
 int main()
 {
-  kwsys_stl::string libName = "lib/plugin" CONFIG_DIR "/";
+  kwsys_stl::string libName = EXAMPLE_EXE_PLUGIN_DIR CONFIG_DIR "/";
   libName += kwsys::DynamicLoader::LibPrefix();
   libName += "example_mod_1";
   libName += kwsys::DynamicLoader::LibExtension();

+ 6 - 0
Tests/Plugin/src/example_exe.h.in

@@ -0,0 +1,6 @@
+#ifndef example_exe_h
+#define example_exe_h
+
+#define EXAMPLE_EXE_PLUGIN_DIR "@CMAKE_LIBRARY_OUTPUT_DIRECTORY@"
+
+#endif