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

Reply via email to