Michael Hertling wrote: > On 03/30/2011 03:14 PM, Rolf Eike Beer wrote: >> [...] Only adding >> >> INSTALL(TARGETS privstatic EXPORT myexport DESTINATION trash) >> >> made CMake complete successfully, resulting in the static stuff showing >> up >> in the export, too. > > Could you provide a minimal but complete example with that issue?
See below. Looks like the only way to prevent this is to set LINK_INTERFACE_LIBRARIES to empty for every lib that uses the static lib. Which may be a good idea anyway as that transitive linking is harmful. Eike PROJECT(cmexport C CXX) CMAKE_MINIMUM_REQUIRED(VERSION 2.8) FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/stlib.c "#include \"stlib.h\" int stlib_func(void) { return 42; } ") FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/stlib.h "#pragma once extern int stlib_func(void); ") ADD_LIBRARY(stlib STATIC ${CMAKE_CURRENT_BINARY_DIR}/stlib.c ${CMAKE_CURRENT_BINARY_DIR}/stlib.h ) FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/privlib.c "#include \"privlib.h\" #include \"stlib.h\" int privlib_func(void) { return stlib_func(); } ") FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/privlib.h "#pragma once #ifdef __cplusplus extern \"C\" { #endif extern int privlib_func(); #ifdef __cplusplus } #endif ") ADD_LIBRARY(privlib SHARED ${CMAKE_CURRENT_BINARY_DIR}/privlib.c ${CMAKE_CURRENT_BINARY_DIR}/privlib.h ) TARGET_LINK_LIBRARIES(privlib stlib) # comment out the next line to get the error # SET_TARGET_PROPERTIES(privlib PROPERTIES LINK_INTERFACE_LIBRARIES "") FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/publib.cpp "#include \"privlib.h\" int pubfunc(void) { return privlib_func(); } ") ADD_LIBRARY(publib SHARED ${CMAKE_CURRENT_BINARY_DIR}/publib.cpp) TARGET_LINK_LIBRARIES(publib privlib) SET_TARGET_PROPERTIES(publib PROPERTIES LINK_INTERFACE_LIBRARIES "") INSTALL(TARGETS publib privlib EXPORT cmexp DESTINATION lib) INSTALL(EXPORT cmexp DESTINATION share) _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake