Hi Martin, you have to add a custom command to generate your lib and make your custom target depending on it:
add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xxx.a COMMAND unzip -o ${CMAKE_CURRENT_SOURCE_DIR}/${ZIPFILE} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${ZIPFILE} ) add_custom_target( ${TARGET}_lib DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/xxx.a ) This will unzip the xxx.a only if your zipfile has changed. Regards, Kiwi On 28.11.2012 13:41, Martin Koller wrote:
Hi, I'm struggling with the following requirement: I have a lib stored in a zip file (the lib is not built via cmake, e.g. delivered from external company). I want a target to link against this lib and want to extract the lib from the zip file only if this specific target is being built, and only if it is not already unzipped. What I tried in the libs directory: set(TARGET xxx) add_library(${TARGET} STATIC IMPORTED GLOBAL) set_target_properties(${TARGET} PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/xxx.a) set(ZIPFILE xxx.zip) add_custom_target(${TARGET}_lib COMMAND unzip -o ${CMAKE_CURRENT_SOURCE_DIR}/${ZIPFILE} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${ZIPFILE} ) add_dependencies(${TARGET} ${TARGET}_lib) Then I can use this target in e.g. target_link_libraries(myTarget xxx) The above however unzips the lib every time, even if it is already existing. Is it possible to avoid that ? P.S:This is the simple example. I have other similar problems when the zip file not only holds 1 library but also a bunch of headerfiles and more than 1 lib ...
-- Kay-Uwe (Kiwi) Lorenz IT Department ModuleWorks GmbH Ritterstr. 12a 52072 Aachen Germany HRB 11871 Amtsgericht Aachen Geschäftsführer Yavuz Murtezaoglu -- 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