2013-10-31 40 views
6

Cpack'i kullanarak birden fazla paketi nasıl paketlerim? Birden paket şu şekilde:Çoklu paketin paketlenmesi İPUCU

A.tar.gz 
---bin/hello 
---lib/libhello.a 
---B.tar.gz 
    ---bin/demo 
    ---lib/libdemo.a 

B.tar.gz Aklıma

cevap

1

bir çözüm install kullanmak sonra B.tar.gz üreten özel bir hedef oluşturmak ve etmektir A.tar.gz dahildir oluşturulan B.tar.gz eklemek için komut. Aşağıda istediğiniz çıktıyı üretmek için kullandığım örnek CMakeLists.txt dosyasıdır.

cmake_minimum_required(VERSION 2.8) 

project(pack_multiple_example) 

# Create the custom command to tar up the files 
# wanted in the B.tar.gz 
set(B_OUTPUT "B.tar.gz") 
add_custom_target(
    ${B_OUTPUT} 
    COMMAND tar -czf ${B_OUTPUT} demo libdemo.a 
    DEPENDS demo demo_exe 
    ) 
install(
    FILES "${PROJECT_BINARY_DIR}/${B_OUTPUT}" 
    DESTINATION . 
    ) 

# Create libhello target 
set(HELLOLIB_SRCS hellolib.c) 
add_library(hello ${HELLOLIB_SRCS}) 
install(
    TARGETS hello 
    ARCHIVE DESTINATION lib 
    LIBRARY DESTINATION lib 
    COMPONENT hello 
    ) 

# Create hello binary target 
set(HELLO_SRCS hello.c) 
add_executable(hello_exe ${HELLO_SRCS}) 
# Auto-build the B.tar.gz when hello_exe changes 
add_dependencies(hello_exe ${B_OUTPUT}) 
target_link_libraries(hello_exe hello) 
# Set the output name since we use the 'hello' target name 
# for the library target. 
set_target_properties(hello_exe PROPERTIES OUTPUT_NAME hello) 
install(
    TARGETS hello_exe 
    RUNTIME DESTINATION bin 
    COMPONENT hello 
    ) 

# Create libdemo target 
set(DEMOLIB_SRCS demolib.c) 
add_library(demo ${DEMOLIB_SRCS}) 
# The install command below is commented out since the 
# target output is packaged via the custom target above 
#install(
# TARGETS demo 
# ARCHIVE DESTINATION lib 
# LIBRARY DESTINATION lib 
# COMPONENT demo 
# ) 

# Create demo binary target 
set(DEMO_SRCS demo.c) 
add_executable(demo_exe ${DEMO_SRCS}) 
target_link_libraries(demo_exe demo) 
# Set the output name since we use the 'demo' target name 
# for the library target. 
set_target_properties(demo_exe PROPERTIES OUTPUT_NAME demo) 
# The install command below is commented out since the 
# target output is packaged via the custom target above 
#install(
# TARGETS demo_exe 
# RUNTIME DESTINATION bin 
# COMPONENT demo 
# ) 

set(CPACK_GENERATOR "TGZ") 

include(CPack)