-add_executable(ping_simulator ${PROJECT_DIRECTORY}/examples/gras/ping/_ping_simulator.c ping_server.c ${PROJECT_DIRECTORY}/examples/gras/ping/ping_client.c ${PROJECT_DIRECTORY}/examples/gras/ping/ping_common.c)
-add_executable(ping_client ${PROJECT_DIRECTORY}/examples/gras/ping/_ping_client.c ${PROJECT_DIRECTORY}/examples/gras/ping/ping_client.c ping_common.c)
-add_executable(ping_server ${PROJECT_DIRECTORY}/examples/gras/ping/_ping_server.c ${PROJECT_DIRECTORY}/examples/gras/ping/ping_server.c ping_common.c)
+add_executable(ping_simulator ${CMAKE_CURRENT_BINARY_DIR}/_ping_simulator.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/ping_server.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/ping_client.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/ping_common.c)
+add_executable(ping_client ${CMAKE_CURRENT_BINARY_DIR}/_ping_client.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/ping_client.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/ping_common.c)
+add_executable(ping_server ${CMAKE_CURRENT_BINARY_DIR}/_ping_server.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/ping_server.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/ping_common.c)
+add_custom_command(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/_ping_simulator.c
+ ${CMAKE_CURRENT_BINARY_DIR}/_ping_client.c
+ ${CMAKE_CURRENT_BINARY_DIR}/_ping_server.c
+ DEPENDS gras_stub_generator ${CMAKE_CURRENT_SOURCE_DIR}/ping.xml
+ COMMAND ${CMAKE_BINARY_DIR}/bin/gras_stub_generator ping ${CMAKE_CURRENT_SOURCE_DIR}/ping.xml
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ )