The variable PROTOBUF_IMPORT_DIRS has to be set in the toplevel CMakeLists.txt, since the import path has to be available for all .proto files within all subdirectories. Without this addition, the GenericExperiment will fail to compile. Change-Id: I676e0abd83bd1c5d247afcd33e7522e72da3dc2f
51 lines
2.3 KiB
CMake
51 lines
2.3 KiB
CMake
### Setup search paths for headers ##
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/core)
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR}/core/comm)
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/core)
|
|
|
|
# We need to control all the protoc import paths to ensure, that all
|
|
# protoc imports refer to the same root path. Otherwise the generated
|
|
# protoc headers are not comptabile.
|
|
SET(PROTOBUF_GENERATE_CPP_APPEND_PATH FALSE)
|
|
SET(PROTOBUF_IMPORT_DIRS "/usr/include;${CMAKE_CURRENT_SOURCE_DIR}/core/comm"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/core/comm")
|
|
|
|
|
|
# Note: CMAKE_CURRENT_BINARY_DIR is needed to find "FailConfig.hpp", which
|
|
# is generated by CMake from config/FailConfig.hpp.in and stored in
|
|
# your build-dir. (The same goes for "FailControlMessage.pb.h", etc.)
|
|
# This is done in the "src"-folder because experiments need to include
|
|
# Fail* headers as well (see hierarchy of CMakeLists.txt's).
|
|
|
|
## Add CMakeLists from subdirectories ##
|
|
# The Fail* core source files (and it's subdirectories):
|
|
add_subdirectory(core)
|
|
|
|
# Here we add all user-defined experiments (which fills the target list)
|
|
add_subdirectory(experiments)
|
|
message(STATUS "[${PROJECT_NAME}] Chosen experiment targets:")
|
|
foreach(experiment_name ${EXPERIMENTS_ACTIVATED})
|
|
message(STATUS "[${PROJECT_NAME}] -> ${experiment_name}")
|
|
endforeach(experiment_name)
|
|
|
|
# Here we add activated plugins
|
|
add_subdirectory(plugins)
|
|
message(STATUS "[${PROJECT_NAME}] Chosen plugin targets:")
|
|
foreach(plugin_name ${PLUGINS_ACTIVATED})
|
|
message(STATUS "[${PROJECT_NAME}] -> ${plugin_name}")
|
|
endforeach(plugin_name)
|
|
|
|
# libfail: dummy library that pulls in all other libraries as dependencies
|
|
# (probably there's a smarter way to do that with cmake?)
|
|
add_library(fail dummy.cc)
|
|
|
|
## Setup build dependencies of the Fail* lib
|
|
## -> the Fail* targets and user defined experiment targets
|
|
# start/end-group: ld must iterate over these archives more than once to figure
|
|
# out which objects are needed
|
|
set(experiment_libraries "")
|
|
foreach(exp_or_plugin ${EXPERIMENTS_ACTIVATED} ${PLUGINS_ACTIVATED})
|
|
set(experiment_libraries ${experiment_libraries} fail-${exp_or_plugin})
|
|
endforeach(exp_or_plugin)
|
|
target_link_libraries(fail fail-sal fail-cpn fail-efw fail-comm fail-util ${experiment_libraries})
|