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.
+You first need to copy the `FindSimGrid.cmake` (at the root of the
+SimGrid tree) into the `cmake/Modules` directory of your project.
+
@verbatim
project(MyFirstScheduler)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+find_package(SimGrid REQUIRED)
+include_directories(${SimGrid_INCLUDE_DIR})
+
set(SIMULATOR_SOURCES main.c other.c util.c)
add_executable(my_simulator ${SIMULATOR_SOURCES})
-target_link_libraries(my_simulator simgrid)
+target_link_libraries(my_simulator ${SimGrid_LIBRARY})
set(OTHER_SOURCES blah.c bar.c foo.h)
add_executable(other_xp ${OTHER_SOURCES})
-target_link_libraries(other_xp simgrid)
+target_link_libraries(other_xp ${SimGrid_LIBRARY})
@endverbatim
@section install_yours_makefile Building your project with Makefile
@section install_yours_trouble Troubleshooting your project setup
-@subsection install_yours_trouble_libpath Many undefined references
+@subsection install_yours_trouble_libpath error while loading shared libraries: libsimgrid.so
+
+Sometimes, the following error message (or similar) will be produced:
+@verbatim
+./masterworker1: error while loading shared libraries: libsimgrid.so:
+cannot open shared object file: No such file or directory
+@endverbatim
-Sometimes, the following error message (or similar) will be produced.
+The same problem can make the execution of your programs spit pages
+and pages of errors similar to the following. If there is only a few
+undefined references, then you want to read the next section.
@verbatim
masterworker.c:209: undefined reference to `sg_version_check'
masterworker.c:209: undefined reference to `MSG_init_nocheck'
(and many other undefined references)
@endverbatim
-It means that the system does not manage to find simgrid when it tries
-to execute your programs. Specify where to search with the
-<tt>LD_LIBRARY_PATH</tt> variable. Try running the following command
-before executing your code. If it helps, you should add this line to
-your ~/.bashrc so that it gets executed each time you log into your
-computer.
+In both cases, it means that the system does not manage to find the
+simgrid library when it tries to execute your programs. Under Linux,
+specify where to search with the <tt>LD_LIBRARY_PATH</tt> variable.
+Try running the following command before executing your code. If it
+helps, you should add this line to your ~/.bashrc so that it gets
+executed each time you log into your computer.
@verbatim
export LD_LIBRARY_PATH=/opt/simgrid/lib
Under Linux, you can find which version was used with the following
command that will display the full path to every used dynamic library.
-Once you've found the obsolete copy of SimGrid, just erase it and
-relaunch your program.
+Once you've found the obsolete copy of SimGrid, just erase it, and
+recompile and relaunch your program.
@verbatim ldd yoursimulator
@endverbatim