On 05/05/2011 12:51 PM, Glenn Coombs wrote: > Thanks for that link Michael. It doesn't please me, but I can confirm that > it does work :-) It's a nice hack around a deficiency in cmake. I ended up > using this code: > > # First create a dummy library to hang the pthreads > # dependency on via the IMPORTED_LINK_INTERFACE_LIBRARIES property. > file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/pthreads_dummy.c "") > add_library(pthreads_dummy STATIC > ${CMAKE_CURRENT_BINARY_DIR}/pthreads_dummy.c) > > # make sure the dummy library gets built > add_dependencies(systemc pthreads_dummy) > > # export the dummy library so we can include it as an imported target > export(TARGETS pthreads_dummy NAMESPACE imported FILE > importedpthreads_dummy.cmake) > include(${CMAKE_CURRENT_BINARY_DIR}/importedpthreads_dummy.cmake) > > # use the imported target to add pthread dependency for the DEBUGPTHREADS > config > set_target_properties(importedpthreads_dummy > PROPERTIES > IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUGPTHREADS ${PTHREADS_LIBRARIES}) > > target_link_libraries(myLib importedpthreads_dummy) > > which is a lot of extra lines when all I really want is something like this: > > target_link_libraries(myLib CONFIG DebugPthreads pthreads)
Yes, absolutely. Although setups with libraries which are needed in some configurations only are quite rare, AFAIK, your case shows that this may well happen. ;-) Possible - and more appropriate - solutions could be: - New target properties, say, EXTRA_LINK_LIBRARIES[_<CONFIG>] that are just added to the respective targets' link command lines. - Permission of empty or absent IMPORTED_LOCATION[_<CONFIG>] properties; with these, you might just have said ADD_LIBRARY(pthreads SHARED IMPORTED) SET_TARGET_PROPERTIES(pthreads PROPERTIES IMPORTED_LOCATION_DEBUGPTHREADS ${PTHREADS_LIBRARIES}) TARGET_LINK_LIBRARIES(myLib pthreads) and that's it. Perhaps, this would be worth a feature request. Regards, Michael > On 26 April 2011 15:15, Michael Hertling <mhertl...@online.de> wrote: > >> >> There is a possibility with an intermediate empty static library which >> gets reimported into the project and equipped with the target property >> IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>, but I don't know if that >> approach will please you... ;) Anyway, see [1] for the details. >> >> Regards, >> >> Michael >> >> [1] http://www.mail-archive.com/cmake@cmake.org/msg34680.html >> >> PS: Empty static libraries aren't allowed on Windows; use >> >> FILE(WRITE ${CMAKE_BINARY_DIR}/dummy.c "") >> ADD_LIBRARY(dummy STATIC dummy.c) >> >> to satisfy the Visual Studio tools. _______________________________________________ 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