cmake_minimum_required(VERSION 2.8.3)
project(hello_world)

## Zlokalizuj biblioteki i makra systemu catkin
## Jeśli lista KOMPONENTÓW jak na przykład find_package(WYMAGANE KOMPONENTY systemu catkin xyz)
## są używane, zlokalizuj inne pakiety systemu catkin
find_package(catkin REQUIRED COMPONENTS
  rospy
  std_msgs
)

## Zależności systemu znajdują się wraz z konwencjami CMake
# find_package(WYMAGANE KOMPONENTY ###ładowawnia(boost) systemu)


## Odkomentuj to jeżeli the package has a setup.py. Te makro zawiera
## moduły oraz skrypty globalne zadeklarowane w instalacji
## Odwiedź strone http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()

##################################################
## Deklaracja komunikatów ROS, usług lub działań##
##################################################

## Aby zbdować i zadeklarować komunikaty, usługi lub działania wewnątrz tego
## pakietu, wykonaj następujące kroki:
##   * MSG_DEP_SET będzie zestawem pakietów w których typy komunikatów
##     z których korzystasz w swoich wiadomościach/usługach/działanich (na przykład std_msgs, actionlib_msgs, ...).
##   * w pliku package.xml:
##   * dodaj znacznik build_depend oraz run_depend dla każdego pakietu w MSG_DEP_SET
##   * Jeżeli MSG_DEP_SET nie jest pusty, następujące zależności mogą zostać
##     tranzytywnie przeciągnięte{?}, lecz mogą jednak być pewnie zadeklarowane:
##   * dodaj znacznik build_depend do "message_generation"
##   * dodaj znacznik run_depend do "message_runtime"
## 	 * W tym pliku (CMakeLists.txt):
##   * dodaj "message_generation" do każdego pakietu w MSG_DEP_SET do
##     find_package(WYMAGANE KOMPONENTY systemu catkin ...)
##   * dodaj "message_runtime" do każdego pakietu w MSG_DEP_SET do
##     catkin_package(CATKIN_DEPENDS ...)
##   * Odkomentuj w zależności od potrzeb poniższe sekcje add_*_files
##     i wymień każdy plik do przetworzenia .msg/.srv/.action
##   * Odkomentuj poniższy wpis generate_messages
##   * dodaj każdy pakiet w MSG_DEP_SET do generate_messages(DEPENDENCIES ...)

## Wygeneruj komunikaty w folderze 'msg'
# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )

## Wygeneruj usługi w folderze 'srv'
# add_service_files(
#   FILES
#   Service1.srv
#   Service2.srv
# )

## Wygeneruj działania w folderze 'action'
# add_action_files(
#   FILES
#   Action1.action
#   Action2.action
# )

## Wygeneruj dodane komunikaty i usługi z wszystkimi zależnosciami wymienionymi tutaj
# generate_messages(
#   DEPENDENCIES
#   std_msgs 
# )

############################################
## Określona konfiguracja systemu catkin  ##
############################################
## Makro catkin_package generuje pliki konfiguracyjne cmake dla naszego pakietu
## Określ rzeczy do przekazania do zależnych projektów
## INCLUDE_DIRS: Odkomentuj to jeśli nasz pakiet zawiera pliki nagłówka
## LIBRARIES: Stworzone przez nas biblioteki w tym projekcie porzebne w projektach zależnych
## CATKIN_DEPENDS: Rownież wymagany projekt zależny catkin_packages
## DEPENDS:zależności systemu dla tego projektu, potrzebne w projekcie zależnym
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES hello_world
#  CATKIN_DEPENDS rospy std_msgs
#  DEPENDS system_lib
)

###############
## Budowanie ##
###############

## Określ dodatkowe lokalizacje plików nagłówka
## Lokalizacje twoch pakietów powinny być wymienione przed innymi lokalizacjami
# include_directories(include)
include_directories(
  ${catkin_INCLUDE_DIRS}
)

## Zadeklaruj bibliotekę cpp
# add_library(hello_world
#   src/${PROJECT_NAME}/hello_world.cpp
# )

## Zadeklaruj plik wykonywalny cpp
# add_executable(hello_world_node src/hello_world_node.cpp)

## Dodaj zależności celu cmake dla plików wykonywalnych/bibliotek
## jako przykład, nagłówki komunikatu muszą zostać wygenerowane przed węzłami
# add_dependencies(hello_world_node hello_world_generate_messages_cpp)

## Określ biblioteki do połączenia lub zamiast tego cel pliku wykonywalnego
# target_link_libraries(hello_world_node
#   ${catkin_LIBRARIES}
# )

################
## Instalacja ##
################

# Wszystkie cele instalacji powinny korzystać ze zmiennych PRZEZNACZENIA systemu catkin
# Odwiedź strone http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html

## Zaznacz skrypty wykonywalne (np. Python) do instalacji
## W przeciwieństwie do setup.py możemy wybrać lokalizację
# install(PROGRAMS
#   scripts/my_python_script
#   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

## Zaznacz pliki wykonywalne oraz/lub biblioteki do instalacji
# install(TARGETS hello_world hello_world_node
#   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
#   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
#   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

## Zaznacz pliki nagłówka cpp do instalacji
# install(DIRECTORY include/${PROJECT_NAME}/
#   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
#   FILES_MATCHING PATTERN "*.h"
#   PATTERN ".svn" EXCLUDE
# )

## Zaznacz inne pliki do instalacji (np. pliki startowe oraz pliki ###bag)
# install(FILES
#   # myfile1
#   # myfile2
#   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
# )

################
## Testowanie ##
################

## Dodaj cel gtest oparty o cpp oraz biblioteki łącz
# catkin_add_gtest(${PROJECT_NAME}-test test/test_hello_world.cpp)
# if(TARGET ${PROJECT_NAME}-test)
#   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
# endif()

## Dodaj foldery do uruchomienia przez nosetests języka python
# catkin_add_nosetests(test)
