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]

Reply via email to