-..
+.. _setup_your_own:
Start your Own Project
======================
Building your project with CMake
--------------------------------
-Here is a `CMakeLists.txt` that you can use as a starting point for
-your project. It builds two simulators from a given set of source files.
+Here is a `CMakeLists.txt` that you can use as a starting point for your S4U
+project (see below for MPI projects). It builds two simulators from a given set
+of source files.
.. code-block:: cmake
- cmake_minimum_required(VERSION 2.8.8)
+ cmake_minimum_required(VERSION 2.8.12)
project(MyFirstSimulator)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
MPI projects should include ``find_package (MPI)`` in CMakeLists.txt. Then, the
variables ``MPI_C_COMPILER``, ``MPI_CXX_COMPILER``, and ``MPI_Fortran_COMPILER`` should
-point to the full path of smpicc, smpicxx, and smpiff respectively. Example:
+point to the full path of smpicc, smpicxx, and smpiff respectively.
+It is however not advised to set these variables from the CMakeLists.txt file directly.
+In addition, you may need to set ``SMPI_PRETEND_CC=1`` to please cmake when it tests the compiler.
-.. code-block:: shell
+.. code-block:: console
- cmake -DMPI_C_COMPILER=/opt/simgrid/bin/smpicc -DMPI_CXX_COMPILER=/opt/simgrid/bin/smpicxx -DMPI_Fortran_COMPILER=/opt/simgrid/bin/smpiff .
+ $ SMPI_PRETEND_CC=1 cmake -DMPI_C_COMPILER=/opt/simgrid/bin/smpicc -DMPI_CXX_COMPILER=/opt/simgrid/bin/smpicxx -DMPI_Fortran_COMPILER=/opt/simgrid/bin/smpiff .
Building your project with Makefile
.. image:: /img/eclipseScreenShot.png
:align: center
-
-Building the Java examples in Eclipse
--------------------------------------
-
-If you want to build our Java examples in Eclipse, get the whole
-source code and open the archive on your disk. In Eclipse, select
-the menu "File / Import", and then in the wizard "General / Existing
-Project into Workspace". On the next page, select the directory
-"examples/deprecated/java" that you can find in the SimGrid source tree as a root
-directory and finish the creation.
-
-The file ``simgrid.jar`` must be in the root directory of the SimGrid
-tree. That's where it is built by default, but if you don't want to
-compile it yourself, just grab that file from the SimGrid website and
-copy it in here.
-
-Please note that once you better understand SimGrid, you should not
-modify the examples directly but instead create your own project in
-eclipse. This will make it easier to upgrade to another version of
-SimGrid.
-
.. _install_yours_troubleshooting:
Troubleshooting your Project Setup
When the library cannot be found, you will get such an error message similar to:
-.. code-block:: shell
+.. code-block:: console
- ./masterworker1: error while loading shared libraries: libsimgrid.so: cannot open shared object file: No such file or directory
+ $ ./masterworker1: error while loading shared libraries: libsimgrid.so: cannot open shared object file: No such file or directory
To fix this, add the path to where you installed the library to the
``LD_LIBRARY_PATH`` variable. You can add the following line to your
Many undefined references
^^^^^^^^^^^^^^^^^^^^^^^^^
-.. code-block:: shell
+.. code-block:: console
masterworker.c:209: undefined reference to `sg_version_check'
- masterworker.c:209: undefined reference to `MSG_init_nocheck'
(and many other undefined references)
This happens when the linker tries to use the wrong library. Use