To be resolved by a directory re-organization as follows:
- consistent mapping between file paths and class names.
- consistent #include usage for svn and installed headers.
- consistent source paths for debuggers, valgrind etc.
- flexible packaging into libraries, executables (e.g. libqpidc, libqpidd)
- full dependencies, e.g. from clean co "make test/FooBarTest.so"
can build all the dependencies to run that test.
? Faster build - single makefile tends to be faster, esp as tree gets bigger.
- consistent user #includes. User has 2 options:
- install in standard place, no -I, #include <qpid/client/Message.h>
- -I /usr/include/qpid, #include <client/Message.h>
- single makefile in src/ builds all libs, exes, tests.
- subdirectory per namespace
- files named after classes
- #includes in .h files are relative:
- in src: #include "client/Message.h"
- in subdir: #include "../client/Message.h"
- .cpp files: #include "client/Message.h"
- User code with installed headers as above.
Makefile.am - include makefile.mk from subdirs
*.cpp *.h - sources in qpid namespace
client/ - sources in qpid::client namespace
makefile.mk - lists client sources with path, e.g. client/Message.cpp
*.cpp, *.h - client sources
sys/ - As for client/ for other namespaces
tests/ - test code.
makefile.mk - test make fragment.
Use: "g++ -c -o path/file.cpp path/file.o" to put .o files in subdir.
Autoconf/automake supports use of -o.
Autoconf needs to check for -o option: AM_PROG_CC_C_O is for C, verify
if this works for C++ or there's another option.