Chuck Rolke created QPID-6611:
---------------------------------
Summary: [C++ Windows] Create all binary executables in build/src
folder
Key: QPID-6611
URL: https://issues.apache.org/jira/browse/QPID-6611
Project: Qpid
Issue Type: New Feature
Components: C++ Broker, C++ Client
Affects Versions: 0.32
Environment: Windows and Visual Studio; C++ builds
Reporter: Chuck Rolke
My windows build produces 38 executables. Only one of them, qpidd.exe, actually
runs in the folder in which it is produced. This means the other 37 just don't
work.
{noformat}
$ cd build\src\tests\Debug
$ hello_world.exe
The program can't start because qpidmessagingd.dll is missing from
your computer. Try reinstalling the program to fix this problem.
{noformat}
I'm including a patch to some cmake scripts that force all of the executables
to be in the same folders that hold the qpid*.dll libraries. Then all of the
executables work with minimal external diddling. Further, from within Visual
Studio all executables, think HelloWorld, can be selected as as the 'Startup
Project' and run directly.
One can currently go into the shared installation /bin folder and run a fair
number programs from there. All of the qpid/proton/boost libraries are in that
folder and things 'just work'. What one cannot do is run 'hello_world' from
within Visual Studio. So if you have a problem or a test case to try then you
are stuck with no debugger. For hello_world to work under the debugger go into
the project properties and point the $OutDir macro at <build>/src/Debug where
all of the qpid dll files are and recompile. Now hello_world runs as expected
in VS.
So here's how working with this patch should play out.
# Get a nice checkout and apply the patch.
# Run cmake. Assume: mkdir build; cd build; cmake ../cpp
# Do a build. For this example use the Debug configuration. At this point the
qpid dll files are in build\src\Debug and so are all 38 .exe example and test
programs.
# Manually install some libraries.
#* copy ..\..\..\install_dir\bin\qpid-proton*.dll build\src\Debug. This step is
not necessary if you have no proton.
#* You can also copy boost libraries or have boost in your path for native C++.
For the .NET binding you must copy the boost libraries to build\src\Debug of
the application will not start.
Now CD into build\bin\Debug and *all* of the programs run. I can 'dir *.exe'
and see the choices and try them. I can't remember the last time I ran
print_events on Windows before today!
I tried this patch on a Linux system. All of the executables are now in
build/src as expected. Everything works: self test, qpidd, examples, tests. I
will not suggest forcing this patch on the source tree in general as it will
surely break scripts that have hard coded paths to executables and will break
if the targets move around.
If I'm missing some magic that solves these issues some other way I'd love to
hear about it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]