[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