On 11/14/2011 08:11 PM, Mathias Gaunard wrote:
> What is the recommended way to define libraries with custom build commands?
> 
> This trick seems to be the only way:
> 
> if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
>    file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
> endif()
> add_library(foo dummy.cpp)
> add_custom_command(TARGET foo POST_BUILD
>                     COMMAND my command to replace the dummy libfoo
>                    )
> 
> Is it normal that kind of thing is not possible with IMPORTED libraries?

IMO, no: ;-)

CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(CUSTOMLIBRARIES C)
SET(CMAKE_VERBOSE_MAKEFILE ON)
FILE(WRITE ${CMAKE_BINARY_DIR}/f.c "void f(void){}\n")
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/libf.so
    COMMAND gcc -fPIC -c f.c
    COMMAND gcc -fPIC -shared -o libf.so f.o
    DEPENDS ${CMAKE_BINARY_DIR}/f.c)
ADD_CUSTOM_TARGET(libf DEPENDS ${CMAKE_BINARY_DIR}/libf.so)
ADD_LIBRARY(f SHARED IMPORTED)
SET_TARGET_PROPERTIES(f PROPERTIES
    IMPORTED_LOCATION ${CMAKE_BINARY_DIR}/libf.so)
ADD_DEPENDENCIES(f libf)
FILE(WRITE ${CMAKE_BINARY_DIR}/main.c "int main(void){return 0;}\n")
ADD_EXECUTABLE(main main.c)
TARGET_LINK_LIBRARIES(main f)

Does this suit your needs?

Regards,

Michael
--

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