Hi, I am having troubles with linking a bunch of imported libraries that have cyclic dependencies.
This is what I am doing: 8<======================= find_library(ESP8266_SDK_LIB_MAIN main ${ESP8266_SDK_BASE}/lib) add_library(esp8266_main UNKNOWN IMPORTED) set_property(TARGET esp8266_main PROPERTY IMPORTED_LOCATION "${ESP8266_SDK_LIB_MAIN}") find_library(ESP8266_SDK_LIB_PHY phy ${ESP8266_SDK_BASE}/lib) add_library(esp8266_phy UNKNOWN IMPORTED) set_property(TARGET esp8266_phy PROPERTY IMPORTED_LOCATION "${ESP8266_SDK_LIB_PHY}") find_library(ESP8266_SDK_LIB_PP pp ${ESP8266_SDK_BASE}/lib) add_library(esp8266_pp UNKNOWN IMPORTED) set_property(TARGET esp8266_pp PROPERTY IMPORTED_LOCATION "${ESP8266_SDK_LIB_PP}") find_library(ESP8266_SDK_LIB_LWIP lwip ${ESP8266_SDK_BASE}/lib) add_library(esp8266_lwip UNKNOWN IMPORTED) set_property(TARGET esp8266_lwip PROPERTY IMPORTED_LOCATION "${ESP8266_SDK_LIB_LWIP}") target_link_libraries(ESP8266_SDK INTERFACE gcc esp8266_lwip esp8266_main esp8266_phy esp8266_pp ) target_link_libraries(esp8266_main INTERFACE esp8266_lwip esp8266_pp esp8266_phy ) 8<======================= The given example is not complete. However, I hope it is sufficient to give you an idea of what I want to achieve: I would like to specify the dependencies between imported libraries. Subsequently I want to make the linker call mention my libraries several times in order to make the linker resolve all dependency cycles (multiplicity). This is the corresponding error message: 8<======================= CMake Error at external/esp8266-cmake/sdk/nonos-1.4.0.cmake:111 (target_link_libraries): Cannot specify link libraries for target "esp8266_main" which is not built by this project. 8<======================= As a workaround I added the -Wl,--start-group (referred to as BUILD_LINK_PREFIX) and the -Wl,--end-group (referred to as BUILD_LINK_SUFFIX) arguments (yes, it is a GCC) directly to the invocation of target_link_libraries() of my executable which has been defined by add_executable() beforehand. But I think that this is just a botch-up. Here is an example of the complete code (using the before-mentioned workaround): * https://github.com/rpoisel/esp8266-mqtt * https://github.com/rpoisel/esp8266-cmake/blob/master/main/CMakeLists.txt Thanks for any suggestions in advance, Rainer -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake