[Coin-discuss] Problem with MinGW

Marco Tacconi marco.tacconi at studenti.unimi.it
Tue May 9 06:40:08 EDT 2006


> Eduardo F. Silva wrote:
>> Hi Marco,
>>
>> Thanks for the good news.  I am also trying to bring my COIN projects from
>> MSVC++ to MingW.  Are you (or someone else) using Eclipse/CDT?
>>
>> May I ask you if you have any important remarks to help setting the
>> environment?
>> I mean, for example, compiler options, setting symbols for coin to
> identify
>> the OS/Compiler as in CoinSignal.hpp, or even if you recommend managed or
>> standard(using COIN makefiles) c++ projects.
>> I think that using managed projects (makefiles automatically generated)
> may
>> be better because would be easier to change compiler tools(for example,
>> setting eclipse with Microsoft C++ toolkit (free)). However, setting the
>> programming environment may be painful.
>>
>>
>> Thanks,
>> Eduardo.      
>>

Hi Eduardo,
I am not using eclipse/CDT but MinGW + UnxUtils + Dos command prompt :-)
I describe the steps made for setting-up the environment here:
http://list.coin-or.org/pipermail/coin-discuss/2006-March/001908.html

Additionally I use a Makefile that is a modified version of the Makefile 
found in COIN/Clp/Samples/Makefile.anywhere
This one:

# Start of the Makefile
EXENAME := setcoveringCG

SOURCEFILES :=
SOURCEFILES += main.cpp
SOURCEFILES += SetCoveringCG.cpp
SOURCEFILES += CbcCompareUser.cpp
SOURCEFILES += CbcHeuristicUser.cpp

SRCEXT := cpp

#OptLevel := -g
OptLevel := -O2

# The location of COIN
CoinDir := D:/COIN
export MakefileDir := $(CoinDir)/Makefiles
include ${MakefileDir}/Makefile.coin
include ${MakefileDir}/Makefile.location

IncDir := .
IncDir += ${OsiCbcIncDir}
IncDir += ${OsiClpIncDir}
IncDir += ${CbcIncDir}
IncDir += ${CglIncDir}
IncDir += ${ClpIncDir}
IncDir += ${OsiIncDir}
IncDir += ${CoinIncDir}
IncDir += ${zlibIncDir}
IncDir += ${bzlibIncDir}
IncDir += ${readlineIncDir}
IncDir += ${lapackIncDir}

LibDir := .
LibDir += ${OsiCbcLibDir}
LibDir += ${OsiClpLibDir}
LibDir += ${CbcLibDir}
LibDir += ${CglLibDir}
LibDir += ${OsiLibDir}
LibDir += ${ClpLibDir}
LibDir += ${CoinLibDir}
LibDir += ${zlibLibDir}
LibDir += ${bzlibLibDir}
LibDir += ${readlineLibDir}
LibDir += ${lapackLibDir}
LibDir += $(GlpkLibDir)

LibName :=
LibName += ${OsiCbcLibName}
LibName += ${OsiClpLibName}
LibName += ${CbcLibName}
LibName += ${CglLibName}
LibName += ${OsiLibName}
LibName += ${ClpLibName}
LibName += ${CoinLibName}
LibName += ${zlibLibName}
LibName += ${bzlibLibName}
LibName += ${readlineLibName}
LibName += ${lapackLibName}
LibName += $(GlpkLibName)

Define :=
Define += ${OsiClpDefine}
Define += ${OsiDefine}
Define += ${OsiCbcDefine}
Define += ${CbcDefine}
Define += ${CglDefine}
Define += ${ClpDefine}
Define += ${CoinDefine}
Define += ${zlibDefine}
Define += ${bzlibDefine}
Define += ${readlineDefine}
Define += ${lapackDefine}
Define += ${taucsDefine}

CXXFLAGS += $(OPTFLAG)
CXXFLAGS += -Wall

###############################################################################

space:= $(empty) $(empty)
OptVersion := $(subst $(space),_,$(OptLevel))

TARGETDIR := $(UNAME)$(OptVersion)
DEPDIR := dep

VPATH := . : include : Junk : ${TARGETDIR} : ${DEPDIR}
###############################################################################

CXXFLAGS += $(addprefix -I,${IncDir})
CXXFLAGS += $(addprefix -D,${Define})

LIBDIRS := ${LibDir}
LIBS    := ${LibName}

LDFLAGS := $(addprefix -L,$(LIBDIRS))
LDFLAGS += $(call ifprefix,$(SHLINKPREFIX),$(LIBDIRS))
LDFLAGS += $(patsubst lib%,-l%,$(basename $(LIBS)))

#LDFLAGS += -lefence
#LDFLAGS += -Wl,-static
###############################################################################

TESTSRC := $(SOURCEFILES)#.$(SRCEXT)
TESTOBJ := $(TESTSRC:.$(SRCEXT)=.o)
TESTOBJ := $(addprefix $(TARGETDIR)/, $(TESTOBJ))
TESTDEP := $(addprefix $(DEPDIR)/, $(TESTSRC:.$(SRCEXT)=.d))

###############################################################################
# This one must be right before the rules

include ${MakefileDir}/Makefile.rules

###############################################################################

.DELETE_ON_ERROR:

.PHONY: default clean libdepend

default: $(EXENAME)

###############################################################################


$(EXENAME) : libdepend $(TESTOBJ)
         @rm -rf Junk
         @echo ""
         @echo Creating program $(EXENAME)
         @rm -f $@
         @$(CXX) $(CXXFLAGS) -o $@ $(TESTOBJ) $(LDFLAGS) $(SYSLD) -lm

clean:
         @rm -f $(TARGETDIR)/*.o
         @rm -f $(EXENAME)
         @rm -f $(DEPDIR)/*.d

###############################################################################

-include $(TESTDEP)

# End of the Makefile

Obviously you should adapt it for your path and source files.
And use at your own risk :-)
I hope to be useful.

Bye.

Marco Tacconi




More information about the Coin-discuss mailing list