请教makefile有什么用,我从www.omg.org下载了一个CORBA库mico2.3.5,想在VC.6下编译,它提供了makefile.win32文件,我贴在里面了

时间:2022-01-30 14:01:24
另外,VC.6中如何进行命令行编译?

一.文件readme.win32内容如下:

RELEASE NOTES
-------------
This README describes some specific details for running MICO under
Windows using the Visual-C++ compiler from Microsoft. Beware that the
port isn't finished yet(but hopefully very close to completion).

Take a look at mico\demo\mfc\README to see an example that uses MICO
in conjunction with the MFC class library.

PROBLEMS
--------
Porting MICO to Visual-C++ was a major pain. Sometimes a MICO
application will crash inside mico.dll. As far as we can tell this is
related to a bug in the Microsoft Linker when dealing with global
constructors. If this happens to you, try to link typecode.obj and
util.obj statically with your application (a copy of these object
files can be found in win32-bin\lib). This usually resolved our
problems...  sigh...

 Normally no need to link any additional files.
 The util.obj is only needed when passing std::map objects between
 application and a dll(necessary in idl.exe).
 The problem with typecode.obj should be fixed too(knock on wood).

Most of the demos now have a makefile for VC++ and a batch file.
The presence of these, does not mean that all the examples work, most of
them have been converted automatically. In some cases, not everything
is ported to win32, in other cases the compiler can't handle the code.
Sometimes micod or a server keeps on running, after an example
ends(you have to close the console, or  when the process is not
started with a separate console(start /b), you have to kill the process
from the tasklist).

Especially for compiling single demos, a small batch file placed
somewhere in the path(for example named make.bat, unless you 
already have a make.exe ), that looks like:

nmake /f makefile.win32 %1 %2 %3

is quite helpful, so that you can compile, just by
typing make(or 'make clean' to remove the object files )

TODO:
- nsadmin has strange input handling
- demo/relship won't compile


Visual C++ 5 SP3 contains a SERIOUS BUG in the std::string class,
using VC6 is recommended!


If you have problems with the dll-version, here is a guide
from Roland Koeckel <roland.koeckel@gmx.de> how to use
MICO in a static library:

How to compile mico as a static library with VC++ 6.0 SP1

1.) VC++ and *.cc files

Making VC++ recognize *.cc files as C++ files is a major
hazzle. I am tempted to say this has been done on purpose.
But in case you want to compile mico in the Developer
there is no way around:

http://support.microsoft.com/support/kb/articles/Q181/5/06.asp

Everybody not willing or able to use regedit feel free to
use the following registry file at your own risk.
Copy the lines between the dashed lines into a file "cc.reg"
and double click on it.

- - - - - - cc.reg - - - -

REGEDIT4

[HKEY_CLASSES_ROOT\.cc]
@="cppfile"

[HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Tools\32-Bit C/C++-Compiler f黵 80x86]
"Input_Spec"="*.c;*.cpp;*.cxx;*.cc"

[HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Tools\<Component 0x3>]
"Input_Spec"="*.c;*.cpp;*.cxx;*.cc"

- - - - - - - - - - - - - -

2.) Creating the project

- Create a new project "micolib" as a Win32 Static Library

- Add _WINDOWS, BUILD_MICO_DLL and __MICO_ORB__ to the
  precompiler definitions for Debug and Release

- Select "Multithreaded debugger" for Debug and "Multithreaded"
  for Release as Runtime Library

- Add the following files to the project:

  mico\orb\*.cc, mico\ir\ir_all.cc, mico\imr\imr_all.cc

- Remove the following files from the project:

  *.cc.diff
  win32def.cc,
  win32dll.cc
  os-unix.cc
  memcheck.cc
  memtrace.cc
  orb_all.cc

- Add mico\include\windows and mico\include to your include
  path. Move mico\include\windows up to the very top

- Add /Tp to the compiler paramters for the .cc files

- Compile the library

- Be prepared for a huge debug lib (up to 40M)

3.) Using the library

- Create a new project for your application and make it depend on
  the mico lib project.

- Add _WINDOWS to the precompiler definitions for Debug and Release

- Select "Multithreaded debugger" as Runtime Library for the
  debug build and "Multithreaded" for the release build

- Add wsock32.lib to the list of libraries and any other lib you
  want to link your application with. The mico lib will be linked
  to your application through the dependency

- Compile the project

- Be prepared for huge debug database files (.pdb)

---------------------------------------
When using micod with --forward it takes a rather long time (about
1.5 sec) to invoke an object after the server has been restarted
after a shutdown.

To improve the performance of rebinding to an object,
an adjustment can be made to the Microsoft TCP/IP implementation.
Without this change, the time it takes for a client to rebind to a
server object is significantly longer than needed.

Specifically, if a server responds that a port in the search range
is not in use, the Microsoft TCP/IP default is to continue trying
3 times with a half-second interval between each retry.
This value of 3 retries is settable in the registry, and
we recommend this be changed to 0.
Note that changing this parameter only takes effect after a reboot.

To set this manually, use REGEDIT:

Windows NT
------------------
create a DWORD value called TcpMaxConnectRetransmissions in:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters

and set the value to 0.

Windows 95
-----------------
create a DWORD value called MaxConnectRetries in:

KEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDMSTCP

and set the value to 0.

HELP
----
Feel free to send comments, patches, or whatever over the mailing list!

二.文件makefile.win32内容如下:
#
# MICO --- a free CORBA implementation
# Copyright (C) 1997 Kay Roemer & Arno Puder
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# Send comments and/or bug reports to:
#                mico@informatik.uni-frankfurt.de
#

!include MakeVars.win32

LIBDIRS = orb idl 
PRGDIRS = cpp idl ir imr daemon tools
ALLDIRS = cpp orb idl ir imr daemon coss tools

all: nt-all

nt-all: nt-system nt-inst

nt-system:
@if not exist win32-bin    mkdir win32-bin
@if not exist win32-bin\lib     mkdir win32-bin\lib
@for %i in ( $(LIBDIRS) ) do      @if exist %i cmd /c "cd %i & $(MAKE) /nologo /f Makefile.win32 lib"

set path=$(SRCDIR)\win32-bin;%path%;
@for %i in ( $(PRGDIRS) ) do      @if exist %i cmd /c "cd %i & $(MAKE) /nologo /f Makefile.win32 prg"
cmd /c "cd coss & $(MAKE) /nologo /f Makefile.win32"



nt-inst:
@if not exist win32-bin\include    mkdir win32-bin\include
xcopy /q /s include\*.* win32-bin\include 2> nul
copy orb\typecode.obj win32-bin\lib 2> nul
copy orb\util.obj win32-bin\lib 2> nul

clean:
@for %i in ( $(ALLDIRS) ) do      @if exist %i cmd /c "cd %i & $(MAKE) /nologo /f Makefile.win32 clean"
del /s /f /q win32-bin  2> nul
del *~ 2>nul
rmdir /s /q win32-bin 2> nul

#----------------------------------------------------------------------------
#---- Make targets for Win95/98 that avoid cmd.exe features -----------------
#----------------------------------------------------------------------------

w95-all: w95-system w95-inst

w95-system:
mkdir win32-bin
mkdir win32-bin\lib
cd orb
        nmake /nologo /f Makefile.win32 lib
cd ..\idl
        nmake /nologo /f Makefile.win32 lib
cd ..\cpp
        nmake /nologo /f Makefile.win32 prg
cd ..\idl
        nmake /nologo /f Makefile.win32 prg
cd ..\ir
        nmake /nologo /f Makefile.win32 prg
cd ..\imr
        nmake /nologo /f Makefile.win32 prg
cd ..\daemon
        nmake /nologo /f Makefile.win32 prg
cd ..\coss
        nmake /nologo /f Makefile.win32 w95-all
cd ..\tools
nmake /nologo /f Makefile.win32 w95-all
cd ..

w95-inst:
cd win32-bin
mkdir include
cd ..
xcopy /q /s include\*.* win32-bin\include
copy orb\typecode.obj win32-bin\lib
copy orb\util.obj win32-bin\lib

w95-clean:
cd cpp
  del *.obj
cd ..\orb
  del *.obj
cd ..\idl
  del *.obj
cd ..\ir
  del *.obj
cd ..\imr
  del *.obj
cd ..\daemon
  del *.obj
cd ..\coss
  del *.obj

5 个解决方案

#1


是为了节省编译时间,防止不必要的重编译

#2


nmake -f makefile.win32

#3


VC6下在那里输入命令行?

#4


guan zhu

#5


这些是用nmake编译出一些库文件还IDL.exe等,为后来的开发做准备。详细的请看www.mico.omg里面关于如何在VC中使用mico

#1


是为了节省编译时间,防止不必要的重编译

#2


nmake -f makefile.win32

#3


VC6下在那里输入命令行?

#4


guan zhu

#5


这些是用nmake编译出一些库文件还IDL.exe等,为后来的开发做准备。详细的请看www.mico.omg里面关于如何在VC中使用mico