add_library(elgamal-interface INTERFACE) target_include_directories(elgamal-interface INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} ) target_sources(elgamal-interface INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/elgamal.h ) target_link_libraries(elgamal-interface INTERFACE cmix-crypto-interface ) foreach(impl ${elgamal_implementations}) add_subdirectory(${impl}) endforeach() add_library(elgamal-implementation elgamal.h elgamal.c ) target_include_directories(elgamal-implementation PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ) target_link_libraries(elgamal-implementation PUBLIC elgamal-interface PUBLIC elgamal-${elgamal_implementation} )