From dd69a368dccda07eeefadf71a962d243da91936e Mon Sep 17 00:00:00 2001 From: legrand Date: Tue, 18 Sep 2007 16:01:04 +0000 Subject: [PATCH] paradiseo-->peo git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@598 331e1502-861f-0410-8da2-ba01fb791d7f --- trunk/paradiseo-peo/CMakeLists.txt | 141 +++++---- trunk/paradiseo-peo/doc/CMakeLists.txt | 48 ++- trunk/paradiseo-peo/peo-conf.cmake | 17 +- trunk/paradiseo-peo/src/core/CMakeLists.txt | 36 ++- trunk/paradiseo-peo/src/paradiseo | 14 - trunk/paradiseo-peo/src/paradiseo.h | 285 ------------------ .../paradiseo-peo/src/rmc/mpi/CMakeLists.txt | 43 ++- .../tutorial/Lesson1/CMakeLists.txt | 60 ++-- trunk/paradiseo-peo/tutorial/Lesson1/main.cpp | 2 +- .../tutorial/Lesson2/CMakeLists.txt | 63 ++-- trunk/paradiseo-peo/tutorial/Lesson2/main.cpp | 2 +- .../tutorial/Lesson3/CMakeLists.txt | 63 ++-- trunk/paradiseo-peo/tutorial/Lesson3/main.cpp | 2 +- .../tutorial/Walkthrough/CMakeLists.txt | 111 +++---- .../tutorial/Walkthrough/exampleA.cpp | 2 +- .../tutorial/Walkthrough/exampleB.cpp | 2 +- .../tutorial/Walkthrough/exampleC.cpp | 2 +- .../tutorial/Walkthrough/exampleD.cpp | 2 +- .../tutorial/Walkthrough/exampleE.cpp | 2 +- .../tutorial/examples/tsp/CMakeLists.txt | 36 ++- .../tsp/paradiseo-peo-lsn-shared.doxyfile | 20 +- 21 files changed, 384 insertions(+), 569 deletions(-) delete mode 100644 trunk/paradiseo-peo/src/paradiseo delete mode 100644 trunk/paradiseo-peo/src/paradiseo.h diff --git a/trunk/paradiseo-peo/CMakeLists.txt b/trunk/paradiseo-peo/CMakeLists.txt index 86eee5ea0..6c3eb1926 100644 --- a/trunk/paradiseo-peo/CMakeLists.txt +++ b/trunk/paradiseo-peo/CMakeLists.txt @@ -3,9 +3,9 @@ ### 0) Preliminary checking: no WIN and libxml2 ###################################################################################### -IF(WIN32) - MESSAGE (FATAL_ERROR "ParadisEO-PEO can not be generated on Windows systems") -ENDIF(WIN32) +#IF(WIN32) +# MESSAGE (FATAL_ERROR "ParadisEO-PEO can not be generated on Windows systems") +#ENDIF(WIN32) # check libxml2 FIND_PROGRAM(XML2_CONFIG_PROGRAM NAMES xml2-config PATHS /usr/local/bin /usr/bin DOC "The libxml2 (www.xmlsoft.org) configuration tool") @@ -24,7 +24,7 @@ EXECUTE_PROCESS(COMMAND ${XML2_CONFIG_PROGRAM} --libs OUTPUT_VARIABLE XML2_LIBS ###################################################################################### -### 1) If you want to set your variables in moeo-conf.cmake and avoid the cmd line +### 1) If you want to set your variables in peo-conf.cmake and avoid the cmd line ###################################################################################### INCLUDE(peo-conf.cmake OPTIONAL) @@ -33,12 +33,19 @@ INCLUDE(peo-conf.cmake OPTIONAL) ###################################################################################### -### 2) Main project config +### 2) Project properties ###################################################################################### # set the project name PROJECT(ParadisEO-PEO) +SET(PACKAGE_BUGREPORT "paradiseo-help@lists.gforge.inria.fr" CACHE STRING "Package bug report" FORCE) +SET(PACKAGE_NAME "ParadisEO-PEO Moving Objects" CACHE STRING "Package name" FORCE) +SET(PACKAGE_STRING "ParadisEO-PEO 1.0" CACHE STRING "Package string full name" FORCE) +SET(PACKAGE_VERSION "1.0" CACHE STRING "Package version" FORCE) +SET(GLOBAL_VERSION "1.0" CACHE STRING "Global version" FORCE) +SET(VERSION "1.0" CACHE STRING "Version" FORCE) + # check cmake version compatibility CMAKE_MINIMUM_REQUIRED(VERSION 2.4 FATAL_ERROR) @@ -68,83 +75,87 @@ INCLUDE(CheckLibraryExists) ###################################################################################### -### 4) SET main paths (can be defined in peo-conf.cmake) +### 4) Include the main configuration variables ###################################################################################### -IF(NOT DEFINED PEO_DIR) - SET(PEO_DIR ${ParadisEO-PEO_SOURCE_DIR} CACHE PATH "ParadisEO-PEO main directory") -ENDIF(NOT DEFINED PEO_DIR) +# The "config" variable must be provided on the command line +IF(NOT DEFINED config OR NOT config) + MESSAGE(FATAL_ERROR "The \"config\" variable must be set on the command line to + give the path of the install configuration file. ") +ENDIF(NOT DEFINED config OR NOT config) -# Need main EO directory path -IF(NOT DEFINED EO_DIR OR NOT EO_DIR) - SET(EO_DIR ${EOdir} CACHE PATH "ParadisEO-EO main directory" FORCE) # given on the command line -ELSE(NOT DEFINED EO_DIR OR NOT EO_DIR) - MESSAGE(STATUS "EOdir already defined as ${EO_DIR}") -ENDIF(NOT DEFINED EO_DIR OR NOT EO_DIR) +# Need the config file whose full path is given thanks to the "config" variable +INCLUDE(${config}) -# Set the main paths for EO -IF(NOT DEFINED EO_SRC_DIR) - SET(EO_SRC_DIR "${EO_DIR}/src") -ENDIF(NOT DEFINED EO_SRC_DIR) - -# Need main MO directory path -IF(NOT DEFINED MO_DIR OR NOT MO_DIR) - SET(MO_DIR ${MOdir} CACHE PATH "ParadisMO-MO main directory" FORCE) # given on the command line -ELSE(NOT DEFINED MO_DIR OR NOT MO_DIR) - MESSAGE(STATUS "MOdir already defined as ${MO_DIR}") -ENDIF(NOT DEFINED MO_DIR OR NOT MO_DIR) - -# Set the main paths for MO -IF(NOT DEFINED MO_SRC_DIR) - SET(MO_SRC_DIR "${MO_DIR}/src") -ENDIF(NOT DEFINED MO_SRC_DIR) - -IF(NOT DEFINED PEO_SRC_DIR) - SET(PEO_SRC_DIR ${PEO_DIR}/src) -ENDIF(NOT DEFINED PEO_SRC_DIR) - -IF(NOT DEFINED PEO_DOC_DIR) - SET(PEO_DOC_DIR ${PEO_DIR}/doc) -ENDIF(NOT DEFINED PEO_DOC_DIR) ###################################################################################### ###################################################################################### -### 5) Paths checking +### 4) Paths checking ###################################################################################### -IF(EXISTS ${EO_DIR}) - MESSAGE (STATUS "Using ParadisEO-EO path: ${EO_DIR}") -ELSE(EXISTS ${EO_DIR}) - MESSAGE (FATAL_ERROR "Could not find the ParadisEO-EO path: ${EO_DIR}. You should use : cmake . -DEOdir= -DMOdir=") -ENDIF(EXISTS ${EO_DIR}) -# Is it an absolute path ? -SET (ABSOLUTE_PATH_REGEX "^/") -IF(NOT ${EO_DIR} MATCHES "${ABSOLUTE_PATH_REGEX}") - MESSAGE (FATAL_ERROR "${EO_DIR} MUST BE an absolute path") -ENDIF(NOT ${EO_DIR} MATCHES "${ABSOLUTE_PATH_REGEX}") +IF(WIN32) + SET (ABSOLUTE_PATH_REGEX "^[A-Z]:|^[a-z]:") +ELSE(WIN32) + SET (ABSOLUTE_PATH_REGEX "^/") +ENDIF(WIN32) -SET(EO_LIB_DIR "${EO_DIR}/src") - - -IF(EXISTS ${MO_DIR}) - MESSAGE (STATUS "Using ParadisMO-MO path: ${MO_DIR}") -ELSE(EXISTS ${MO_DIR}) - MESSAGE (FATAL_ERROR "Could not find the ParadisMO-MO path: ${MO_DIR}. You should use : cmake . -DEOdir= -DMOdir=") -ENDIF(EXISTS ${MO_DIR}) - -# Is it an absolute path ? -SET (ABSOLUTE_PATH_REGEX "^/") -IF(NOT ${MO_DIR} MATCHES "${ABSOLUTE_PATH_REGEX}") - MESSAGE (FATAL_ERROR "${MO_DIR} MUST BE an absolute path") -ENDIF(NOT ${MO_DIR} MATCHES "${ABSOLUTE_PATH_REGEX}") +SET(REQUIRED_PATHS "EO_SRC_DIR" "EO_BIN_DIR" "MO_SRC_DIR" "MO_BIN_DIR") +FOREACH (path ${REQUIRED_PATHS}) + IF(EXISTS ${${path}}) + MESSAGE (STATUS "Using ${path}=${${path}}") + ELSE(EXISTS ${${path}}) + MESSAGE (FATAL_ERROR "\n Cannot find \"${${path}}\". Please, fill \"${config}\" with a correct value for ${path} variable") + ENDIF(EXISTS ${${path}}) + + IF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") + MESSAGE (FATAL_ERROR "${${path}} MUST BE an absolute path") + ENDIF(NOT ${${path}} MATCHES "${ABSOLUTE_PATH_REGEX}") +ENDFOREACH (path ${REQUIRED_PATHS}) ###################################################################################### +##################################################################################### +### 5) Manage the build type +##################################################################################### + +# the user should choose the build type on windows environments,excepted under cygwin (default=none) +SET(CMAKE_DEFAULT_BUILD_TYPE None CACHE STRING "Variable that stores the default CMake build type" FORCE) + +IF(WIN32 AND NOT CYGWIN) + IF(NOT CMAKE_BUILD_TYPE) + SET( CMAKE_BUILD_TYPE + ${CMAKE_DEFAULT_BUILD_TYPE} CACHE STRING + "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." + FORCE) + ENDIF(NOT CMAKE_BUILD_TYPE) + MESSAGE(STATUS "") + MESSAGE(STATUS "Warning: The type of build is: ${CMAKE_BUILD_TYPE}.") + MESSAGE(STATUS "The available types are: None Debug Release RelWithDebInfo MinSizeRel.") + MESSAGE(STATUS "You can choose it with: cmake -D") + MESSAGE(STATUS "") +ENDIF(WIN32 AND NOT CYGWIN) + +##################################################################################### + + ###################################################################################### ### 6) Where must cmake go now ? ###################################################################################### -SUBDIRS(doc src tutorial) +SUBDIRS(doc src test tutorial) + +###################################################################################### + + +###################################################################################### +### 7) Test config +###################################################################################### + +#SET(ENABLE_CMAKE_TESTING TRUE CACHE BOOL "Should we test using Dart") + +IF (ENABLE_CMAKE_TESTING) + ENABLE_TESTING() +ENDIF (ENABLE_CMAKE_TESTING) ###################################################################################### diff --git a/trunk/paradiseo-peo/doc/CMakeLists.txt b/trunk/paradiseo-peo/doc/CMakeLists.txt index 6a72254d3..5934e8857 100644 --- a/trunk/paradiseo-peo/doc/CMakeLists.txt +++ b/trunk/paradiseo-peo/doc/CMakeLists.txt @@ -1,38 +1,26 @@ -### ParadisEO-PEO Doc generation using Doxygen ### - -# Find the Doxygen package - will set all the variables required to use Doxygen -FIND_PACKAGE(Doxygen) +########################################################################################## +### PEO Doc generation using Doxygen +########################################################################################## IF (DOXYGEN_FOUND) -SET(PEO_DOC_COMMENT "ParadisEO-PEO framework documentation") -SET(DOXYGEN_INPUT "paradiseo-peo.doxyfile") -SET(DOXYGEN_OUTPUT "ParadisEO-PEO documentation") - -ADD_CUSTOM_COMMAND( - OUTPUT ${DOXYGEN_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E echo_append "Building documentation from ${PEO_DOC_DIR} ..." - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_INPUT} - COMMAND ${CMAKE_COMMAND} -E echo "Done." - WORKING_DIRECTORY ${PEO_DOC_DIR} - COMMENT ${PEO_DOC_COMMENT} - DEPENDS ${DOXYGEN_INPUT} - ) - -# The main target launched with "make doc" -ADD_CUSTOM_TARGET(doc DEPENDS ${DOXYGEN_OUTPUT}) - -# A forced additionnal target that generate the documentation in the current directory -ADD_CUSTOM_TARGET(doc_forced - COMMAND ${CMAKE_COMMAND} -E echo_append "Building documentation from current directory ..." - COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_INPUT} - COMMAND ${CMAKE_COMMAND} -E echo " Done." - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + SET(DOC_DIR ${CMAKE_BINARY_DIR}/doc CACHE PATH "PEO documentation directory") + SET(PEO_DOC_CONFIG_FILE "peo.doxyfile" CACHE PATH "PEO documentation configuration file") + # define the doc target + IF (DOXYGEN_EXECUTABLE) + ADD_CUSTOM_TARGET(doc + COMMAND ${DOXYGEN_EXECUTABLE} ${PEO_DOC_CONFIG_FILE} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + ENDIF (DOXYGEN_EXECUTABLE) + + # configure doxyfile file + CONFIGURE_FILE("${CMAKE_SOURCE_DIR}/doc/${PEO_DOC_CONFIG_FILE}.cmake" + "${CMAKE_BINARY_DIR}/doc/${PEO_DOC_CONFIG_FILE}") ELSE (DOXYGEN_FOUND) - MESSAGE(STATUS "Unable to generate the document, Doxygen package not found") + MESSAGE(STATUS "Unable to generate the documentation, Doxygen package not found") ENDIF (DOXYGEN_FOUND) - - +########################################################################################## \ No newline at end of file diff --git a/trunk/paradiseo-peo/peo-conf.cmake b/trunk/paradiseo-peo/peo-conf.cmake index 8fa260baa..ba4c4c037 100644 --- a/trunk/paradiseo-peo/peo-conf.cmake +++ b/trunk/paradiseo-peo/peo-conf.cmake @@ -2,32 +2,23 @@ ###################################################################################### ###################################################################################### ### In this file, you can specify many CMake variables used to build paradisEO-PEO. -### For example, if you don't want ot give the EO path each time on the command line, -### uncomment the line the "SET(EO_DIR...)" and set your path. -### The section numbers are the same as those used in the CMakeLists.txt file. ###################################################################################### ###################################################################################### ###################################################################################### -### 3) OPTIONNAL - Overwrite default paths +### 1) OPTIONNAL ###################################################################################### -# SET(MO_DIR "" CACHE PATH "ParadisEO-PEO main directory") -# SET(EO_DIR "" CACHE PATH "ParadisEO-EO main directory") - -# SET(EO_SRC_DIR "") -# SET(MO_SRC_DIR "") -# SET(MO_DOC_DIR "") +# SET (MYVAR MYVALUE) ###################################################################################### ##################################################################################### -### 5) OPTIONNAL - Overwrite subdirs +### 2) OPTIONNAL - Overwrite subdirs ###################################################################################### -# SUBDIRS(doc src tutorial) +# SUBDIRS(doc tutorial) ###################################################################################### - diff --git a/trunk/paradiseo-peo/src/core/CMakeLists.txt b/trunk/paradiseo-peo/src/core/CMakeLists.txt index 61adba4f6..fddf647d8 100644 --- a/trunk/paradiseo-peo/src/core/CMakeLists.txt +++ b/trunk/paradiseo-peo/src/core/CMakeLists.txt @@ -1,10 +1,9 @@ - ###################################################################################### ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) ###################################################################################### @@ -36,14 +35,43 @@ ADD_LIBRARY(peo STATIC ${CORE_SOURCES}) ###################################################################################### - ###################################################################################### ### 3) Optionnal: define your target(s)'s version: no effect for windows ###################################################################################### -SET(CORE_VERSION "1.0.beta") +SET(CORE_VERSION ${GLOBAL_VERSION}) SET_TARGET_PROPERTIES(peo PROPERTIES VERSION "${CORE_VERSION}") ###################################################################################### +###################################################################################### +### 4) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + +###################################################################################### +### 5) Where must cmake go now ? +###################################################################################### + +# nothing to be compiled in the subdirs + +###################################################################################### + + + diff --git a/trunk/paradiseo-peo/src/paradiseo b/trunk/paradiseo-peo/src/paradiseo deleted file mode 100644 index 960f721a1..000000000 --- a/trunk/paradiseo-peo/src/paradiseo +++ /dev/null @@ -1,14 +0,0 @@ -// "paradiseo" - -// (c) OPAC Team, LIFL, August 2005 - -/* - Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef __paradiseo_ -#define __paradiseo_ - -#include "paradiseo.h" - -#endif diff --git a/trunk/paradiseo-peo/src/paradiseo.h b/trunk/paradiseo-peo/src/paradiseo.h deleted file mode 100644 index 17f28765a..000000000 --- a/trunk/paradiseo-peo/src/paradiseo.h +++ /dev/null @@ -1,285 +0,0 @@ -// "paradiseo.h" - -// (c) OPAC Team, LIFL, August 2005 - -/* - Contact: paradiseo-help@lists.gforge.inria.fr -*/ - -#ifndef __paradiseo_h_ -#define __paradiseo_h_ - -#include -#include - - -//! \mainpage The ParadisEO-PEO Framework -//! -//! \section intro Introduction -//! -//! ParadisEO is a white-box object-oriented framework dedicated to the reusable design -//! of parallel and distributed metaheuristics (PDM). ParadisEO provides a broad range of features including evolutionary -//! algorithms (EA), local searches (LS), the most common parallel and distributed models and hybridization -//! mechanisms, etc. This high content and utility encourages its use at European level. ParadisEO is based on a -//! clear conceptual separation of the solution methods from the problems they are intended to solve. This separation -//! confers to the user a maximum code and design reuse. Furthermore, the fine-grained nature of the classes -//! provided by the framework allow a higher flexibility compared to other frameworks. ParadisEO is one of the rare -//! frameworks that provide the most common parallel and distributed models. Their implementation is portable on -//! distributed-memory machines as well as on shared-memory multiprocessors, as it uses standard libraries such as -//! MPI, PVM and PThreads. The models can be exploited in a transparent way, one has just to instantiate their associated -//! provided classes. Their experimentation on the radio network design real-world application demonstrate their -//! efficiency. -//! -//! In practice, combinatorial optimization problems are often NP-hard, CPU time-consuming, -//! and evolve over time. Unlike exact methods, metaheuristics allow to tackle large-size problems -//! instances by delivering satisfactory solutions in a reasonable time. Metaheuristics are -//! general-purpose heuristics that split in two categories: evolutionary algorithms (EA) and local -//! search methods (LS). These two families have complementary characteristics: EA allow -//! a better exploration of the search space, while LS have the power to intensify the search in -//! promising regions. Their hybridization allows to deliver robust and better solutions -//! -//! Although serial metaheuristics have a polynomial temporal complexity, they remain -//! unsatisfactory for industrial problems. Parallel and distributed computing is a powerful way -//! to deal with the performance issue of these problems. Numerous parallel and distributed -//! metaheuristics (PDM) and their implementations have been proposed, and are available on -//! theWeb. They can be reused and adapted to his/her own problems. However, the user has to -//! deeply examine the code and rewrite its problem-specific sections. The task is tedious, errorprone, -//! takes along time and makes harder the produced code maintenance. A better way to -//! reuse the code of existing PDM is the reuse through libraries. These are often -//! more reliable as they are more tested and documented. They allow a better maintainability -//! and efficiency. However, libraries do not allow the reuse of design. -//! -//! \section parallel_metaheuristics Parallel and distributed metaheuristics -//! -//! \subsection parallel_distributed Parallel distributed evolutionary algorithms -//! -//! Evolutionary Algorithms (EA) are based on the iterative improvement of a -//! population of solutions. At each step, individuals are selected, paired and recombined in order -//! to generate new solutions that replace other ones, and so on. As the algorithm converges, -//! the population is mainly composed of individuals well adapted to the "environment", for -//! instance the problem. The main features that characterize EA are the way the population is -//! initialized, the selection strategy (deterministic/stochastic) by fostering "good" solutions, -//! the replacement strategy that discards individuals, and the continuation/stopping criterion -//! to decide whether the evolution should go on or not. -//! -//! Basically, three major parallel and distributed models for EA can been distinguished: -//! the island (a)synchronous cooperative model, the parallel evaluation of the -//! population, and the distributed evaluation of a single solution. -//!
    -//!
  • Island (a)synchronous cooperative model. Different EA are simultaneously deployed to -//! cooperate for computing better and robust solutions. They exchange in an asynchronous -//! way genetic stuff to diversify the search. The objective is to allow to delay the global -//! convergence, especially when theEAare heterogeneous regarding the variation operators. -//! The migration of individuals follows a policy defined by few parameters: the migration -//! decision criterion, the exchange topology, the number of emigrants, the emigrants selection -//! policy, and the replacement/integration policy.
  • -//! -//!
  • Parallel evaluation of the population. It is required as it is in general the most timeconsuming. -//! The parallel evaluation follows the centralized model. The farmer applies -//! the following operations: selection, transformation and replacement as they require a -//! global management of the population. At each generation, it distributes the set of new -//! solutions between differentworkers. These evaluate and return back the solutions and their -//! quality values. An efficient execution is often obtained particularly when the evaluation -//! of each solution is costly. The two main advantages of an asynchronous model over -//! the synchronous model are: (1) the fault tolerance of the asynchronous model; (2) the -//! robustness in case the fitness computation can take very different computation times (e.g. -//! for nonlinear numerical optimization). Whereas some time-out detection can be used to -//! address the former issue, the latter one can be partially overcome if the grain is set to very -//! small values, as individuals will be sent out for evaluations upon request of the workers.
  • -//! -//!
  • Distributed evaluation of a single solution. The quality of each solution is evaluated in -//! a parallel centralized way. That model is particularly interesting when the evaluation -//! function can be itself parallelized as it is CPU time-consuming and/or IO intensive. In -//! that case, the function can be viewed as an aggregation of a certain number of partial -//! functions. The partial functions could also be identical if for example the problem to deal -//! with is a data mining one. The evaluation is thus data parallel and the accesses to data -//! base are performed in parallel. Furthermore, a reduction operation is performed on the -//! results returned by the partial functions. As a summary, for this model the user has to -//! indicate a set of partial functions and an aggregation operator of these.
  • -//!
-//! -//! \subsection parallel_ls Parallel distributed local searches -//! -//! \subsubsection local_searches Local searches -//! -//! All metaheuristics dedicated to the improvement of a single solution -//! are based on the concept of neighborhood. They start from a solution randomly generated or -//! obtained from another optimization algorithm, and update it, step by step, by replacing the -//! current solution by one of its neighboring candidates. Some criterion have been identified to -//! differentiate such searches: the heuristic internal memory, the choice of the initial solution, -//! the candidate solutions generator, and the selection strategy of candidate moves. Three main -//! algorithms of local search stand out: Hill Climbing (HC), Simulated -//! Annealing (SA) and Tabu Search (TS). -//! -//! \subsubsection parallel_local_searches Parallel local searches -//! -//! Two parallel distributed models are commonly used in the literature: the parallel distributed -//! exploration of neighboring candidate solutions model, and the multi-start model. -//!
    -//!
  • Parallel exploration of neighboring candidates. It is a low-level Farmer-Worker model -//! that does not alter the behavior of the heuristic. A sequential search computes the same -//! results slower.At the beginning of each iteration, the farmer duplicates the current solution -//! between distributed nodes. Each one manages some candidates and the results are returned to the farmer. -//! The model is efficient if the evaluation of a each solution is time-consuming and/or there are a great -//! deal of candidate neighbors to evaluate. This is obviously not applicable to SA since only one candidate -//! is evaluated at each iteration. Likewise, the efficiency of the model for HC is not always guaranteed as -//! the number of neighboring solutions to process before finding one that improves the current objective function may -//! be highly variable.
  • -//! -//!
  • Multi-start model. It consists in simultaneously launching several local searches. They -//! may be heterogeneous, but no information is exchanged between them. The resultswould -//! be identical as if the algorithms were sequentially run.Very often deterministic algorithms -//! differ by the supplied initial solution and/or some other parameters. This trivial model is -//! convenient for low-speed networks of workstations.
  • -//!
-//! -//! \section hybridization Hybridization -//! -//! Recently, hybrid metaheuristics have gained a considerable interest. For many -//! practical or academic optimization problems, the best found solutions are obtained by -//! hybrid algorithms. Combinations of different metaheuristics have provided very powerful -//! search methods. Two levels and two modes -//! of hybridization have been distinguished: Low and High levels, and Relay and Cooperative modes. -//! The low-level hybridization addresses the functional composition of a single optimization -//! method. A function of a given metaheuristic is replaced by another metaheuristic. On the -//! contrary, for high-level hybrid algorithms the different metaheuristics are self-containing, -//! meaning no direct relationship to their internal working is considered. On the other hand, -//! relay hybridization means a set of metaheuristics is applied in a pipeline way. The output -//! of a metaheuristic (except the last) is the input of the following one (except the first). -//! Conversely, co-evolutionist hybridization is a cooperative optimization model. Each metaheuristic -//! performs a search in a solution space, and exchange solutions with others. -//! -//! \section paradiseo_goals Paradiseo goals and architecture -//! -//! The "EO" part of ParadisEO means Evolving Objects. EO is a C++ LGPL open source -//! framework and includes a paradigm-free Evolutionary Computation library (EOlib) -//! dedicated to the flexible design of EA through evolving objects superseding the most common -//! dialects (Genetic Algorithms, Evolution Strategies, Evolutionary Programming and -//! Genetic Programming). Furthermore, EO integrates several services including visualization -//! facilities, on-line definition of parameters, application check-pointing, etc. ParadisEO is an -//! extended version of the EO framework. The extensions include local search methods, hybridization -//! mechanisms, parallelism and distribution mechanisms, and other features that -//! are not addressed in this paper such as multi-objective optimization and grid computing. In -//! the next sections, we present the motivations and goals of ParadisEO, its architecture and -//! some of its main implementation details and issues. -//! -//! \subsection motivation Motivations and goals -//! -//! A framework is normally intended to be exploited by as many users as possible. Therefore, -//! its exploitation could be successful only if some important user criteria are satisfied. The -//! following criteria are the major of them and constitute the main objectives of the ParadisEO -//! framework: -//! -//!
    -//!
  • Maximum design and code reuse. The framework must provide for the user a whole -//! architecture design of his/her solution method. Moreover, the programmer may redo as -//! little code as possible. This objective requires a clear and maximal conceptual separation -//! between the solution methods and the problems to be solved, and thus a deep domain -//! analysis. The user might therefore develop only the minimal problem-specific code.
  • -//! -//!
  • Flexibility and adaptability. It must be possible for the user to easily add new features/ -//! metaheuristics or change existing ones without implicating other components. Furthermore, -//! as in practice existing problems evolve and new others arise these have to be -//! tackled by specializing/adapting the framework components.
  • -//! -//!
  • Utility. The framework must allow the user to cover a broad range of metaheuristics, -//! problems, parallel distributed models, hybridization mechanisms, etc.
  • -//! -//!
  • Transparent and easy access to performance and robustness. As the optimization applications -//! are often time-consuming the performance issue is crucial. Parallelism and -//! distribution are two important ways to achieve high performance execution. In order to -//! facilitate its use it is implemented so that the user can deploy his/her parallel algorithms in -//! a transparent manner. Moreover, the execution of the algorithms must be robust to guarantee -//! the reliability and the quality of the results. The hybridization mechanism allows -//! to obtain robust and better solutions.
  • -//! -//!
  • Portability. In order to satisfy a large number of users the framework must support -//! different material architectures and their associated operating systems.
  • -//!
-//! -//! \subsection architecture ParadisEO architecture -//! -//! The architecture of ParadisEO is multi-layer and modular allowing to achieve the objectives -//! quoted above. This allows particularly a high flexibility and adaptability, an -//! easier hybridization, and more code and design reuse. The architecture has three layers -//! identifying three major categories of classes: Solvers, Runners and Helpers. -//!
    -//!
  • Helpers. Helpers are low-level classes that perform specific actions related to the evolution -//! or search process. They are split in two categories: Evolutionary helpers (EH) -//! and Local search helpers (LSH). EH include mainly the transformation, selection and -//! replacement operations, the evaluation function and the stopping criterion. LSH can be -//! generic such as the neighborhood explorer class, or specific to the local search metaheuristic -//! like the tabu list manager class in the Tabu Search solution method. On the -//! other hand, there are some special helpers dedicated to the management of parallel and -//! distributed models 2 and 3, such as the communicators that embody the communication -//! services. -//! -//! Helpers cooperate between them and interact with the components of the upper layer -//! i.e. the runners. The runners invoke the helpers through function parameters. Indeed, -//! helpers have not their own data, but they work on the internal data of the runners.
  • -//! -//!
  • Runners. The Runners layer contains a set of classes that implement the metaheuristics -//! themselves. They perform the run of the metaheuristics from the initial state or -//! population to the final one. One can distinguish the Evolutionary runners (ER) such as -//! genetic algorithms, evolution strategies, etc., and Local search runners (LSR) like tabu -//! search, simulated annealing and hill climbing. Runners invoke the helpers to perform -//! specific actions on their data. For instance, an ER may ask the fitness function evaluation -//! helper to evaluate its population. An LSR asks the movement helper to perform -//! a given movement on the current state. Furthermore, runners can be serial or parallel -//! distributed.
  • -//! -//!
  • Solvers. Solvers are devoted to control the evolution process and/or the search. They -//! generate the initial state (solution or population) and define the strategy for combining -//! and sequencing different metaheuristics. Two types of solvers can be distinguished. -//! Single metaheuristic solvers (SMS) and Multiple metaheuristics solvers (MMS). SMSs -//! are dedicated to the execution of only one metaheuristic.MMS are more complex as they -//! control and sequence several metaheuristics that can be heterogeneous. Solvers interact with -//! the user by getting the input data and delivering the output (best solution, statistics, -//! etc).
  • -//!
-//! -//! According to the generality of their embedded features, the classes of the architecture split -//! in two major categories: Provided classes and Required classes. Provided classes embody -//! the factored out part of the metaheuristics. They are generic, implemented in the framework, -//! and ensure the control at run time. Required classes are those that must be supplied by the -//! user. They encapsulate the problem-specific aspects of the application. These classes are -//! fixed but not implemented in ParadisEO. The programmer has the burden to develop them -//! using the OO specialization mechanism. -//! -//! \section tutorials ParadisEO-PEO Tutorials -//! -//! The basisc of the ParadisEO framework philosophy are exposed in a few simple tutorials: -//! -//! All the presented examples have as case study the traveling salesman problem (TSP). Different operators and auxiliary objects were designed, -//! standing as a common shared source code base. While not being -//! part of the ParadisEO-PEO framework, it may represent a startpoint for a better understanding of the presented tutorials. - - - -#include "core/peo_init.h" -#include "core/peo_run.h" -#include "core/peo_fin.h" - -#include "core/eoVector_comm.h" - -#include "peoEA.h" - -/* Parallel steps of the E.A. */ -#include "peoSeqTransform.h" -#include "peoParaSGATransform.h" -#include "peoSeqPopEval.h" -#include "peoParaPopEval.h" - -/* Cooperative island model */ -#include "core/ring_topo.h" -#include "peoAsyncIslandMig.h" -#include "peoSyncIslandMig.h" - -/* Synchronous multi-start model */ -#include "peoSyncMultiStart.h" - -#endif diff --git a/trunk/paradiseo-peo/src/rmc/mpi/CMakeLists.txt b/trunk/paradiseo-peo/src/rmc/mpi/CMakeLists.txt index b275baef1..cfdf54c78 100644 --- a/trunk/paradiseo-peo/src/rmc/mpi/CMakeLists.txt +++ b/trunk/paradiseo-peo/src/rmc/mpi/CMakeLists.txt @@ -8,12 +8,11 @@ SET (CMAKE_CXX_COMPILER mpicxx) ###################################################################################### - ###################################################################################### ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) INCLUDE_DIRECTORIES(${XML2_CFLAGS_WITH_WHITESPACE}) ###################################################################################### @@ -21,7 +20,7 @@ INCLUDE_DIRECTORIES(${XML2_CFLAGS_WITH_WHITESPACE}) ###################################################################################### -### 2) Define your target(s): just the core library here +### 2) Define your target(s): just the rmc_mpi library here ###################################################################################### SET(RMC_MPI_LIB_OUTPUT_PATH ${ParadisEO-PEO_BINARY_DIR}/lib) @@ -52,9 +51,45 @@ ADD_DEPENDENCIES(rmc_mpi peo) ### 3) Optionnal: define your lib version: ###################################################################################### -SET(RMC_MPI_VERSION "1.0.beta") +SET(RMC_MPI_VERSION ${GLOBAL_VERSION}) SET_TARGET_PROPERTIES(rmc_mpi PROPERTIES VERSION "${RMC_MPI_VERSION}") ###################################################################################### +###################################################################################### +### 4) Link the librairies for your target(s) +###################################################################################### + +# No library required + +###################################################################################### + + +###################################################################################### +### 5) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + +###################################################################################### +### 6) Where must cmake go now ? +###################################################################################### + +# nothing to be compiled in the subdirs + +###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt index 120a82625..8f9cc5115 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson1/CMakeLists.txt @@ -21,6 +21,13 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson1/ParadisEO-PEO_Lesson1.pdf + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson1) ###################################################################################### @@ -28,23 +35,23 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}) -INCLUDE_DIRECTORIES(${MO_SRC_DIR}) -INCLUDE_DIRECTORIES(${PEO_SRC_DIR}) -INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) ###################################################################################### ###################################################################################### -### 2) Specify where CMake can find the libraries (mandatory: before 3) ) +### 2) Specify where CMake can find the libraries ###################################################################################### -LINK_DIRECTORIES( ${EO_SRC_DIR} - ${EO_SRC_DIR}/utils - ${ParadisEO-PEO_BINARY_DIR}/lib - ${TSP_BINARY_DIR}/lib) +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -52,20 +59,16 @@ LINK_DIRECTORIES( ${EO_SRC_DIR} ### 3) Define your target(s): just an executable here ###################################################################################### -# no matter what is the OS, hopefully ADD_EXECUTABLE(tspExample main.cpp) - -ADD_DEPENDENCIES(tspExample tsp) -ADD_DEPENDENCIES(tspExample peo) -ADD_DEPENDENCIES(tspExample rmc_mpi) +ADD_DEPENDENCIES(tspExample tsp peo rmc_mpi) ###################################################################################### ###################################################################################### -### 4) Optionnal: define your target(s)'s version: no effect for windows +### 4) Optionnal: define properties ###################################################################################### -SET(LESSON1_VERSION "1.0.beta") +SET(LESSON1_VERSION ${GLOBAL_VERSION}) SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON1_VERSION}") ###################################################################################### @@ -74,16 +77,29 @@ SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON1_VERSION}") ### 5) Link the librairies ###################################################################################### -TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir -TARGET_LINK_LIBRARIES(tspExample tsp) -TARGET_LINK_LIBRARIES(tspExample peo) -TARGET_LINK_LIBRARIES(tspExample rmc_mpi) -TARGET_LINK_LIBRARIES(tspExample eo) -TARGET_LINK_LIBRARIES(tspExample eoutils) +TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) ###################################################################################### +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson1/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson1/main.cpp index 0658fa813..858aa2ce5 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson1/main.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson1/main.cpp @@ -15,7 +15,7 @@ #include "param.h" -#include +#include #define POP_SIZE 10 diff --git a/trunk/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt index dacb594ce..34d510325 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson2/CMakeLists.txt @@ -21,6 +21,13 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson2/ParadisEO-PEO_Lesson2.pdf + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson2) ###################################################################################### @@ -28,23 +35,23 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}) -INCLUDE_DIRECTORIES(${MO_SRC_DIR}) -INCLUDE_DIRECTORIES(${PEO_SRC_DIR}) -INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) ###################################################################################### ###################################################################################### -### 2) Specify where CMake can find the libraries (mandatory: before 3) ) +### 2) Specify where CMake can find the libraries ###################################################################################### -LINK_DIRECTORIES( ${EO_SRC_DIR} - ${EO_SRC_DIR}/utils - ${ParadisEO-PEO_BINARY_DIR}/lib - ${TSP_BINARY_DIR}/lib) - +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -52,21 +59,16 @@ LINK_DIRECTORIES( ${EO_SRC_DIR} ### 3) Define your target(s): just an executable here ###################################################################################### -# no matter what is the OS, hopefully ADD_EXECUTABLE(tspExample main.cpp) - -ADD_DEPENDENCIES(tspExample tsp) -ADD_DEPENDENCIES(tspExample peo) -ADD_DEPENDENCIES(tspExample rmc_mpi) - +ADD_DEPENDENCIES(tspExample tsp peo rmc_mpi) ###################################################################################### ###################################################################################### -### 4) Optionnal: define your target(s)'s version: no effect for windows +### 4) Optionnal: define properties ###################################################################################### -SET(LESSON2_VERSION "1.0.beta") +SET(LESSON2_VERSION ${GLOBAL_VERSION}) SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON2_VERSION}") ###################################################################################### @@ -75,16 +77,29 @@ SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON2_VERSION}") ### 5) Link the librairies ###################################################################################### -TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir -TARGET_LINK_LIBRARIES(tspExample tsp) -TARGET_LINK_LIBRARIES(tspExample peo) -TARGET_LINK_LIBRARIES(tspExample rmc_mpi) -TARGET_LINK_LIBRARIES(tspExample eo) -TARGET_LINK_LIBRARIES(tspExample eoutils) +TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) ###################################################################################### +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson2/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson2/main.cpp index d1a07f019..c6a384006 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson2/main.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson2/main.cpp @@ -19,7 +19,7 @@ #include "part_route_eval.h" -#include +#include #define POP_SIZE 10 diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt index 2a9da8df5..6aad38f4b 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Lesson3/CMakeLists.txt @@ -2,6 +2,7 @@ ###################################################################################### ### 0) Set the compiler and define targets to easily run the lessons ###################################################################################### + SET (CMAKE_CXX_COMPILER mpicxx) ADD_CUSTOM_TARGET(install DEPENDS ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/lesson.param ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml) @@ -20,31 +21,37 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_if_different ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/schema.xml ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Lesson3/ParadisEO-PEO_Lesson3.pdf + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Lesson3) ###################################################################################### - ###################################################################################### ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}) -INCLUDE_DIRECTORIES(${MO_SRC_DIR}) -INCLUDE_DIRECTORIES(${PEO_SRC_DIR}) -INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) ###################################################################################### ###################################################################################### -### 2) Specify where CMake can find the libraries (mandatory: before 3) ) +### 2) Specify where CMake can find the libraries ###################################################################################### -LINK_DIRECTORIES( ${EO_SRC_DIR} - ${EO_SRC_DIR}/utils - ${ParadisEO-PEO_BINARY_DIR}/lib - ${TSP_BINARY_DIR}/lib) +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -52,21 +59,16 @@ LINK_DIRECTORIES( ${EO_SRC_DIR} ### 3) Define your target(s): just an executable here ###################################################################################### -# no matter what is the OS, hopefully ADD_EXECUTABLE(tspExample main.cpp) - -ADD_DEPENDENCIES(tspExample tsp) -ADD_DEPENDENCIES(tspExample peo) -ADD_DEPENDENCIES(tspExample rmc_mpi) - +ADD_DEPENDENCIES(tspExample tsp peo rmc_mpi) ###################################################################################### ###################################################################################### -### 4) Optionnal: define your target(s)'s version: no effect for windows +### 4) Optionnal: define properties ###################################################################################### -SET(LESSON3_VERSION "1.0.beta") +SET(LESSON3_VERSION ${GLOBAL_VERSION}) SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON3_VERSION}") ###################################################################################### @@ -75,16 +77,29 @@ SET_TARGET_PROPERTIES(tspExample PROPERTIES VERSION "${LESSON3_VERSION}") ### 5) Link the librairies ###################################################################################### -TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir -TARGET_LINK_LIBRARIES(tspExample tsp) -TARGET_LINK_LIBRARIES(tspExample peo) -TARGET_LINK_LIBRARIES(tspExample rmc_mpi) -TARGET_LINK_LIBRARIES(tspExample eo) -TARGET_LINK_LIBRARIES(tspExample eoutils) +TARGET_LINK_LIBRARIES(tspExample ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) ###################################################################################### +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/Lesson3/main.cpp b/trunk/paradiseo-peo/tutorial/Lesson3/main.cpp index 559d83f80..9970e867b 100644 --- a/trunk/paradiseo-peo/tutorial/Lesson3/main.cpp +++ b/trunk/paradiseo-peo/tutorial/Lesson3/main.cpp @@ -16,7 +16,7 @@ #include "param.h" -#include +#include #define POP_SIZE 10 diff --git a/trunk/paradiseo-peo/tutorial/Walkthrough/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/Walkthrough/CMakeLists.txt index 0b8409eb1..2b9f7fe96 100644 --- a/trunk/paradiseo-peo/tutorial/Walkthrough/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/Walkthrough/CMakeLists.txt @@ -14,6 +14,13 @@ ADD_CUSTOM_COMMAND( ARGS -E copy_directory ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Walkthrough/config ${ParadisEO-PEO_BINARY_DIR}/tutorial/Walkthrough/config) +ADD_CUSTOM_COMMAND( + TARGET install + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different + ${ParadisEO-PEO_SOURCE_DIR}/tutorial/Walkthrough/ParadisEO-PEO_Walkthrough.pdf + ${ParadisEO-PEO_BINARY_DIR}/tutorial/Walkthrough) ###################################################################################### @@ -21,10 +28,7 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}) -INCLUDE_DIRECTORIES(${MO_SRC_DIR}) -INCLUDE_DIRECTORIES(${PEO_SRC_DIR}) -INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src ${MO_SRC_DIR}/src ${ParadisEO-PEO_SOURCE_DIR}/src ${TSP_SRC_DIR}) ###################################################################################### @@ -33,10 +37,14 @@ INCLUDE_DIRECTORIES(${TSP_SRC_DIR}) ### 2) Specify where CMake can find the libraries (mandatory: before 3) ) ###################################################################################### -LINK_DIRECTORIES( ${EO_SRC_DIR} - ${EO_SRC_DIR}/utils - ${PEO_DIR}/build - ${TSP_BINARY_DIR}/lib) +IF(NOT WIN32 OR CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}/lib ${ParadisEO-PEO_BINARY_DIR}/lib ${TSP_BINARY_DIR}/lib) +ENDIF(NOT WIN32 OR CYGWIN) + +# especially for Visual Studio +IF(WIN32 AND NOT CYGWIN) + LINK_DIRECTORIES(${EO_BIN_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${ParadisEO-PEO_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE} ${TSP_BINARY_DIR}\\lib\\${CMAKE_BUILD_TYPE}) +ENDIF(WIN32 AND NOT CYGWIN) ###################################################################################### @@ -52,32 +60,20 @@ ADD_EXECUTABLE(exampleC exampleC.cpp) ADD_EXECUTABLE(exampleD exampleD.cpp) ADD_EXECUTABLE(exampleE exampleE.cpp) -ADD_DEPENDENCIES(exampleA tsp) -ADD_DEPENDENCIES(exampleB tsp) -ADD_DEPENDENCIES(exampleC tsp) -ADD_DEPENDENCIES(exampleD tsp) -ADD_DEPENDENCIES(exampleE tsp) - -ADD_DEPENDENCIES(exampleA peo) -ADD_DEPENDENCIES(exampleB peo) -ADD_DEPENDENCIES(exampleC peo) -ADD_DEPENDENCIES(exampleD peo) -ADD_DEPENDENCIES(exampleE peo) - -ADD_DEPENDENCIES(exampleA rmc_mpi) -ADD_DEPENDENCIES(exampleB rmc_mpi) -ADD_DEPENDENCIES(exampleC rmc_mpi) -ADD_DEPENDENCIES(exampleD rmc_mpi) -ADD_DEPENDENCIES(exampleE rmc_mpi) +ADD_DEPENDENCIES(exampleA tsp peo rmc_mpi) +ADD_DEPENDENCIES(exampleB tsp peo rmc_mpi) +ADD_DEPENDENCIES(exampleC tsp peo rmc_mpi) +ADD_DEPENDENCIES(exampleD tsp peo rmc_mpi) +ADD_DEPENDENCIES(exampleE tsp peo rmc_mpi) ###################################################################################### ###################################################################################### -### 4) Optionnal: define your target(s)'s version: no effect for windows +### 4) Optionnal: define your target's properties ###################################################################################### -SET(WALKTHROUGH_VERSION "1.0.beta") +SET(WALKTHROUGH_VERSION ${GLOBAL_VERSION}) SET_TARGET_PROPERTIES(exampleA PROPERTIES VERSION "${WALKTHROUGH_VERSION}") SET_TARGET_PROPERTIES(exampleB PROPERTIES VERSION "${WALKTHROUGH_VERSION}") SET_TARGET_PROPERTIES(exampleC PROPERTIES VERSION "${WALKTHROUGH_VERSION}") @@ -90,40 +86,31 @@ SET_TARGET_PROPERTIES(exampleE PROPERTIES VERSION "${WALKTHROUGH_VERSION}") ### 5) Link the librairies ###################################################################################### -TARGET_LINK_LIBRARIES(exampleA ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir -TARGET_LINK_LIBRARIES(exampleB ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir -TARGET_LINK_LIBRARIES(exampleC ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir -TARGET_LINK_LIBRARIES(exampleD ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir -TARGET_LINK_LIBRARIES(exampleE ${XML2_LIBS}) # define in CMakeLists.txt at PEO root dir - -TARGET_LINK_LIBRARIES(exampleA tsp) -TARGET_LINK_LIBRARIES(exampleB tsp) -TARGET_LINK_LIBRARIES(exampleC tsp) -TARGET_LINK_LIBRARIES(exampleD tsp) -TARGET_LINK_LIBRARIES(exampleE tsp) - -TARGET_LINK_LIBRARIES(exampleA peo) -TARGET_LINK_LIBRARIES(exampleB peo) -TARGET_LINK_LIBRARIES(exampleC peo) -TARGET_LINK_LIBRARIES(exampleD peo) -TARGET_LINK_LIBRARIES(exampleE peo) - -TARGET_LINK_LIBRARIES(exampleA rmc_mpi) -TARGET_LINK_LIBRARIES(exampleB rmc_mpi) -TARGET_LINK_LIBRARIES(exampleC rmc_mpi) -TARGET_LINK_LIBRARIES(exampleD rmc_mpi) -TARGET_LINK_LIBRARIES(exampleE rmc_mpi) - -TARGET_LINK_LIBRARIES(exampleA eo) -TARGET_LINK_LIBRARIES(exampleB eo) -TARGET_LINK_LIBRARIES(exampleC eo) -TARGET_LINK_LIBRARIES(exampleD eo) -TARGET_LINK_LIBRARIES(exampleE eo) - -TARGET_LINK_LIBRARIES(exampleA eoutils) -TARGET_LINK_LIBRARIES(exampleB eoutils) -TARGET_LINK_LIBRARIES(exampleC eoutils) -TARGET_LINK_LIBRARIES(exampleD eoutils) -TARGET_LINK_LIBRARIES(exampleE eoutils) +TARGET_LINK_LIBRARIES(exampleA ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(exampleB ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(exampleC ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(exampleD ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) +TARGET_LINK_LIBRARIES(exampleE ${XML2_LIBS} tsp peo rmc_mpi eo eoutils) ###################################################################################### + + +###################################################################################### +### 6) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + diff --git a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleA.cpp b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleA.cpp index fa86c5ae6..6a41143e2 100644 --- a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleA.cpp +++ b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleA.cpp @@ -16,7 +16,7 @@ #include "two_opt_next.h" #include "two_opt_incr_eval.h" -#include +#include #define POP_SIZE 10 #define NUM_GEN 10 diff --git a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleB.cpp b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleB.cpp index 0de63ab2f..0bc08a2f4 100644 --- a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleB.cpp +++ b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleB.cpp @@ -16,7 +16,7 @@ #include "two_opt_next.h" #include "two_opt_incr_eval.h" -#include +#include #define POP_SIZE 10 #define NUM_GEN 10 diff --git a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleC.cpp b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleC.cpp index 4944fcaa9..d0429775b 100644 --- a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleC.cpp +++ b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleC.cpp @@ -16,7 +16,7 @@ #include "two_opt_next.h" #include "two_opt_incr_eval.h" -#include +#include #define POP_SIZE 10 #define NUM_GEN 10 diff --git a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleD.cpp b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleD.cpp index 16d05cb27..8d29d543e 100644 --- a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleD.cpp +++ b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleD.cpp @@ -16,7 +16,7 @@ #include "two_opt_next.h" #include "two_opt_incr_eval.h" -#include +#include #define POP_SIZE 10 #define NUM_GEN 10 diff --git a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleE.cpp b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleE.cpp index a5ecc3335..33e65fb01 100644 --- a/trunk/paradiseo-peo/tutorial/Walkthrough/exampleE.cpp +++ b/trunk/paradiseo-peo/tutorial/Walkthrough/exampleE.cpp @@ -16,7 +16,7 @@ #include "two_opt_next.h" #include "two_opt_incr_eval.h" -#include +#include #define POP_SIZE 10 #define NUM_GEN 10 diff --git a/trunk/paradiseo-peo/tutorial/examples/tsp/CMakeLists.txt b/trunk/paradiseo-peo/tutorial/examples/tsp/CMakeLists.txt index 7574bc4f4..b22a7fe63 100644 --- a/trunk/paradiseo-peo/tutorial/examples/tsp/CMakeLists.txt +++ b/trunk/paradiseo-peo/tutorial/examples/tsp/CMakeLists.txt @@ -19,9 +19,9 @@ ADD_CUSTOM_COMMAND( ### 1) Include the sources ###################################################################################### -INCLUDE_DIRECTORIES(${EO_SRC_DIR}) -INCLUDE_DIRECTORIES(${MO_SRC_DIR}) -INCLUDE_DIRECTORIES(${PEO_SRC_DIR}) +INCLUDE_DIRECTORIES(${EO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${MO_SRC_DIR}/src) +INCLUDE_DIRECTORIES(${ParadisEO-PEO_SOURCE_DIR}/src) ###################################################################################### @@ -76,7 +76,35 @@ ADD_LIBRARY(tsp STATIC ${TSP_SOURCES}) ### 3) Optionnal: define your lib's version ###################################################################################### -SET(TSP_VERSION "1.0.beta") +SET(TSP_VERSION ${GLOBAL_VERSION}) SET_TARGET_PROPERTIES(tsp PROPERTIES VERSION "${TSP_VERSION}") ###################################################################################### + +###################################################################################### +### 4) Windows advanced config - especially for Microsoft Visual Studio 8 +###################################################################################### + + IF(CMAKE_CXX_COMPILER MATCHES cl) + IF(NOT WITH_SHARED_LIBS) + IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy") + SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od") + SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2") + SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2") + SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od") + SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE") + + ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005") + ENDIF(NOT WITH_SHARED_LIBS) + ENDIF(CMAKE_CXX_COMPILER MATCHES cl) +###################################################################################### + + +###################################################################################### +### 5) Where must cmake go now ? +###################################################################################### + +# nothing to be compiled in the subdirs + +###################################################################################### diff --git a/trunk/paradiseo-peo/tutorial/examples/tsp/paradiseo-peo-lsn-shared.doxyfile b/trunk/paradiseo-peo/tutorial/examples/tsp/paradiseo-peo-lsn-shared.doxyfile index bd1a827a9..5acf7de0b 100644 --- a/trunk/paradiseo-peo/tutorial/examples/tsp/paradiseo-peo-lsn-shared.doxyfile +++ b/trunk/paradiseo-peo/tutorial/examples/tsp/paradiseo-peo-lsn-shared.doxyfile @@ -3,9 +3,9 @@ #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -PROJECT_NAME = "ParadisEO-PEO - Lessons" -PROJECT_NUMBER = 0.1 -OUTPUT_DIRECTORY = ../../docs/html/lsnshared +PROJECT_NAME = "@PACKAGE_NAME@ - Lessons" +PROJECT_NUMBER = @PACKAGE_VERSION@ +OUTPUT_DIRECTORY = @CMAKE_BINARY_DIR@/doc/html/lsnshared CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO @@ -25,7 +25,7 @@ ABBREVIATE_BRIEF = "The $name class" \ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO FULL_PATH_NAMES = NO -STRIP_FROM_PATH = +STRIP_FROM_PATH = @CMAKE_SOURCE_DIR@ STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = YES @@ -76,13 +76,13 @@ QUIET = YES WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO +WARN_NO_PARAMDOC = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- -INPUT = . +INPUT = @CMAKE_CURRENT_SOURCE_DIR@ FILE_PATTERNS = *.cpp \ *.h \ NEWS \ @@ -200,10 +200,10 @@ SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- -TAGFILES = ../../../paradiseo-mo/docs/eo.doxytag=../../../../paradiseo-mo/docs/html \ - ../../../paradiseo-mo/docs/mo.doxytag=../../../../paradiseo-mo/docs/html \ - ../../docs/paradiseo-peo.doxytag=../../ -GENERATE_TAGFILE = ../../docs/paradiseo-peo-lsn-shared.doxytag +TAGFILES = @EO_BIN_DIR@/doc/eo.doxytag=http://eodev.sourceforge.net/eo/doc/html \ + @MO_BIN_DIR@/doc/mo.doxytag=@MO_BIN_DIR@/doc/html \ + @ParadisEO-PEO_BINARY_DIR@/doc/peo.doxytag=@ParadisEO-PEO_BINARY_DIR@/doc/html +GENERATE_TAGFILE = @CMAKE_BINARY_DIR@/doc/paradiseo-peo-lsn-shared.doxytag ALLEXTERNALS = NO EXTERNAL_GROUPS = YES PERL_PATH = /usr/bin/perl