Last Update: 2005/05/28 for pjproject-0.2.8 | |
COMMON PROBLEMS | |
================= | |
- make error | |
process_begin: CreateProcess((null), cl /c /nologo /DWIN32 /D_WIN32 /DPJ_GUID_TY | |
PE=PJ_GUID_COCREATEGUID /I../src ..\src\pj\ioqueue_winnt.c /Fooutput\pjlib_win32 | |
_vc\ioqueue_winnt.o, ...) failed. | |
make (e=2): The system cannot find the file specified. | |
make[1]: *** [output/pjlib_win32_vc/ioqueue_winnt.o] Error 2 | |
solution: | |
make doesn't like spaces in vc98 PATH | |
BUILD INSTRUCTIONS | |
================================================================================ | |
The main target of the build process is to build executable pjsip/bin/pjsua.exe. | |
1. Build instructions for Microsoft Visual Studio .NET 2003 | |
---------------------------------------------- | |
- Open solution file: build/pjproject.sln | |
There will be some dialogs appear asking about Source Safe, just ignore it. | |
- Build the solution. That should build every single projects in pjproject. | |
2. Build instructions for Microsoft Visual Studio 6 | |
------------------------------------------------ | |
Note: MSVC6 workspace is normally updated less often than MSVC7.1 projects. | |
Especially during intermediate release. Normally the status will be | |
noted in the web page. | |
- Open workspace file: build/pjproject.dsw | |
- Perform batch build. That should build every single projects in pjproject. | |
3. Build instructions for Linux i386, Mingw | |
---------------------------------------- | |
Note: mingw/Linux Makefiles are normally updated less often than MSVC7.1 projects. | |
Step-by-step instruction to build the whole thing: | |
$ tar xzvf pjproject-0.2.6.tar.gz | |
$ cd pjproject-0.2.6 | |
$ export TARGET=mingw <== for Mingw, or | |
$ export TARGET=linux-i386 <== for Linux | |
$ make dep | |
$ make all | |
That should build all libraries and test applications (including pjsua). | |
There are some other make targets: | |
$ make clean ==> clean files (except libraries, binaries, & dependency files). | |
$ make realclean ==> clean everything | |
$ make distclean ==> ditto. | |
Note: | |
- pjsua for Mingw and Linux build doesn't have audio device at present. | |
4. Additional flags (for debugging etc.) | |
------------------------------------- | |
The build system for mingw/Linux accepts can additional flags, for example | |
for debugging. | |
Example: | |
$ (on pjproject root directory) | |
$ make CFLAGS=-ggdb "LDFLAGS=-L/foo/lib -lfoo" | |
REDUCING SIZE | |
================================================================================ | |
There are some C macros that can be used to reduce the size. For Mingw and Linux build, | |
these macros are activated if you specify MINSIZE=1 during make, e.g.: | |
$ .. (we're in pjproject directory) .. | |
$ make MINSIZE=1 all | |
Then after building the projects, you can check the size of the libraries: | |
$ make size | |
If you use Microsoft Visual Studio, then you'll have to set the C macros manually: | |
pjlib/src/pj/config.h: | |
- #define PJ_HAS_TCP 0 // ==> to exclude TCP | |
- #define PJ_HAS_THREADS 0 // ==> to exclude threads | |
- #define PJ_FUNCTIONS_ARE_INLINED 0 // ==> do not inline. | |
pjlib/src/pj/log.h: | |
- #define PJ_LOG_MAX_LEVEL 0 // ==> disable all tracing | |
GENERATING DOCUMENTATION | |
================================================================================ | |
You need to have doxygen to generate documentation. | |
To generate doxygen documentation with GNU make, | |
$ (on pjproject root directory) | |
$ make doc | |
If GNU make is not available, generate documentation on each project: | |
$ cd pjsip | |
$ doxygen docs/doxygen.cfg | |
$ cd pjlib | |
$ doxygen docs/doxygen.cfg | |
etc.. | |
The HTML files will be put under docs/html directory. | |
That's about it I guess, sorry couldn't write more. Feel free to drop me a note if | |
you encounter any problems. | |
Thanks, | |
Benny Prijono | |
<bennylp at pjproject.net> | |