forked from toulbar2/toulbar2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
HowTo.build.Toulbar2
174 lines (119 loc) · 6.64 KB
/
HowTo.build.Toulbar2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# required package
# depending of the flag activated in cmake
# boost graph and libxml may be required (warning! XML flag incompatible with STATIC compilation flag)
# by default boost-graph is required , under debian or ubuntu you can easely install the library with
# the following command :
sudo apt-get install libboost-graph-dev
#obviosely if you tag the ilog flag
#ilog librares will be required.
# library : gmp is required
sudo apt-get install libgmp3-dev
# if you want to cross compile toulbar2 please upload static GMP library and header file for MinGW
# at the following url : http://cs.nyu.edu/exact/core/gmp/
# location of static gmp lib for windows must be update in cmake-script/FindGmp.cmake
# by default locate is ./lib/win32/
#cmake package are also required
sudo apt-get install cmake cmake-data cmake-curses-gui
#for cross compilation under ubuntu
#the following package are required
sudo apt-get install mingw32 mingw32-binutils mingw32-runtime nsis
# for default compilation under linux please use:
mkdir build ; cd build ; cmake .. ; make package
# build directory is now you working directory
# by default only toulbar2 package for linux distro will be generate
# cross compilation ==> compile toulbar2 under for win32 plateform
cmake .. -DWIN32=ON ; make package
# in advanced mode you can tune your compilation option using:
ccmake ..
# if ccmake not available on your system please use:
cmake -i ..
#Different compilation options are available: RELEASE DEBUG MINSIZEREL RELWITHDEBINFO
# each option can be tuned using the [t] pad under ccmake
# or cmake -i mode
# Release ==> -O3 -NDEBUG option remove assert
# Debug ==> -g option
# each option can be tune using the [t] pad under ccmake
# ore cmake -i mode
cmake .. -DCMAKE_BUILD_TYPE=RELEASE ==> compilation in release mode
cmake .. -DCMAKE_BUILD_TYPE=DEBUG ===> compilation in debug mode
#notice: iloglue compilation not compliant with -O3 option implied by release mode
# ==> iloglue does not support release mode
# Howto generate toulbar2 source documentation
# first install the following package required
sudo apt-get install texlive-latex-recommended texlive-fonts-recommended doxygen
# for generating documentation use the following command:
cmake -DBUILD_API_DOC=ON -DBUILD_API_DOC_LATEX=ON .. ; make doc
# for generating reference manual and extracting its wcsp file format description
# warning! change to COMPACT_LATEX = NO for a separate wcsp description
cd doc/dev/latex/
pdflatex refman.tex
pdftk refman.pdf cat 11-16 output wcspformat.pdf
#howto run toublar2 validation bench
# the wall set of foo.wcsp locate in the validation directory will be run
# each instances need also a foo.ub containing upperbound
# so for add a new test you just have to copy it int the validation directory
# rebuild makefile using cmake . or make rebuild_cache and launch the test
# ctest scan the ./validation directory recursively
# and create a bench listing , bench option are manager first by the default
# -DDefault_test_option="my option..." Default_test_option is a string. it will be used if in the bench directory
#, there is no local definition of default parameter .
# local parameter can be declare in a cmake file named test-opt.cmake
#. in other words, you can personalise toulbar testing
# in adding you own test and precise the wanted parameter : command line argument in file, timeout, regular expression
# the test-opt.cmake are associeted to the current directory only.
make test ; # alternative command:test
# howto genearte mendelsoft
make clean ; cmake .. -DMENDELSOFT_ONLY=ON ; make package
#howto change define option in code preprocessing.
# please edit the ./cmake-Script/define_option.cmake
# you can add or remove your own -Dfoo option in the set_properties associeted to the target of interest
# howto edit package description:
edit the following variable in the CMakeLists.txt located in the project root
SET (Toulbar_PACKAGE_DESCRIPTION "...." )
SET(Toular_PACKAGE_SUMMARY "...." )
package option are include into the ./cmake-Script/package.cmake
if you want to add a new c++ file in the toulbar2 target
please edit ./cmake-Script/source_files.cmake
#howto generate doxygene doc file
# required packages are : doxygen latex2pdf graphviz
make doc ; # => html and pdf are create in doc/dev directory
#howto generate a codeblock project file : =>
cmake .. -G"CodeBlocks - Unix Makefiles"
# the command produces the Toulbar2_framework.cbp file, which can be open in Code::Blocks IDE.
# obviously cmake allows to generate project file for various IDE environement (Kdevelop , eclipse ..)
# for further information please read cmake man page (cmake --help)
#Howto use eclipse for developping toulbar2 : (follow the url)
http://www.cmake.org/Wiki/CMake:Eclipse_UNIX_Tutorial
#howto compile toulbar2 under Mac OSXX ?
mkdir build
cd build
cmake -G Xcode ..
# open the xcode project file generated in the build directory
# build and manage the source code in the xcode with no problem
###########################
# How to launch toulbar2 cover test
##########################
cd build;
#==> launch all test
ctest ;
# launch only phase 1 test
ctest -R "Phase1"
#launch Phase2 on 2 processor in parallel
ctest -j=2 -R "Phase2" ;
# ./validation and ./cover are directories dedicated to toulbar2 testing
# validation Dir correspond to the phase1 : for each directory include in validation
# you can test a given command line on the instances (*.wcsp file) include in the directory
# the command line can be overloaded in specifying the option in the test-opt.cmake locate in the directory
# this file include 3 variables : command_line_option , test_timeout, test_regexp
# test timeout ( used for all wcsp found in the director)
#regexp to define successfull end. => set (test_regexp "Optimum: ${UB}") for each instance
# will compare the toulbar2 output to the upper bound include in a ub file corresponding to the instances.
#cover Dir include cover test : i.e you can test several command line option for the same instances
# liste of command line option are specified in the file cover/cover-option.cmake
# the file include : the set of instances ==> list instances is a double entry list"
# the current file must include:
# one set named "instances" (including the list of the array of option "each element include into
# $instance set allow to declare an set of option corresponding to the given element"
# example if the set instances contain only : foo.wcsp you must define a second set named foo.wcsp where you will"
# define the list of option ( each element of the second list "foo.wcsp will be used for create a unit test"
# on foo.wcsp with option declare on each tuple of the foo.wcsp (set)