在 cmake 中使用 CPack 生成两个不同的包:Linux
Generate two different package using CPack in cmake : Linux
我想为我的项目创建两个不同的包。
- DCM(包括除 RCM 特定模块之外的所有模块)
- RCM(特定模块。)
1。 DCM :
src/CMakeList.txt
cmake_minimum_required (VERSION 2.8)
add_subdirectory(ecs) # Include all modules
set(CPACK_GENERATOR TGZ)
set(CPACK_PACKAGE_NAME "dcm")
set(CPACK_PACKAGE_VENDOR "AB")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Device Control")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_BUILD ${BUILD_NUMBER})
set(CPACK_COMPONENTS_ALL DCM RCM )
# Include CPack to introduce the appropriate targets
include(CPack)
2。 RCM :
src/ecs/mqa/mqa_rcm/CMakeList.txt
set(RCM_SCRIPTS
commit.sh
install.sh
prepare_for_install.sh
system_check.sh
update_init.sh)
INSTALL(FILES ${RCM_SCRIPTS}
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE WORLD_EXECUTE
DESTINATION ${RCM_INSTALL_PREFIX}/install
COMPONENT RCM )
# Create version file
install(FILES "${CMAKE_BINARY_DIR}/version"
DESTINATION ${RCM_INSTALL_PREFIX}
COMPONENT RCM )
试用:
在 Linux 虚拟机提示符下。
$make -j4
$make install
$make package
它只创建一个包 DCM-1.90.0-Linux.tar.gz
。
参考:
CMake Wiki
和
CPack
和
Whosebug
问题:
我想创建 1.DCM-1.90.0-Linux.tar.gz
和 2.RCM-1.90.0-Linux.tar.gz
包。
我用谷歌搜索,但无法找到确切的解决方案。
如果您需要更多信息,请告诉我。
非常感谢。
我不使用 CPack,所以也许有比以下更好的解决方案。
对于我的不同安装,我在 CACHE 中定义了一些变量(例如:set(INCLUDE_MODULE_XYZ OFF CACHE BOOL "Include the module xyz")
)定义我在我的安装中放入的内容。您可以更改此变量的值 运行 ccmake.
在您的情况下,您可以生成第一个包,使用 ccmake 更改配置,然后生成第二个包(如果需要)。
我只需要将 CPACK 标志设置为 ON。
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
就在
之前
include(CPack)
和运行命令。
make
make install
make package
它创建了两个不同的包。
我想为我的项目创建两个不同的包。
- DCM(包括除 RCM 特定模块之外的所有模块)
- RCM(特定模块。)
1。 DCM : src/CMakeList.txt
cmake_minimum_required (VERSION 2.8)
add_subdirectory(ecs) # Include all modules
set(CPACK_GENERATOR TGZ)
set(CPACK_PACKAGE_NAME "dcm")
set(CPACK_PACKAGE_VENDOR "AB")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Device Control")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/Copyright.txt")
set(CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_BUILD ${BUILD_NUMBER})
set(CPACK_COMPONENTS_ALL DCM RCM )
# Include CPack to introduce the appropriate targets
include(CPack)
2。 RCM : src/ecs/mqa/mqa_rcm/CMakeList.txt
set(RCM_SCRIPTS
commit.sh
install.sh
prepare_for_install.sh
system_check.sh
update_init.sh)
INSTALL(FILES ${RCM_SCRIPTS}
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE WORLD_EXECUTE
DESTINATION ${RCM_INSTALL_PREFIX}/install
COMPONENT RCM )
# Create version file
install(FILES "${CMAKE_BINARY_DIR}/version"
DESTINATION ${RCM_INSTALL_PREFIX}
COMPONENT RCM )
试用: 在 Linux 虚拟机提示符下。
$make -j4
$make install
$make package
它只创建一个包 DCM-1.90.0-Linux.tar.gz
。
参考: CMake Wiki 和 CPack 和 Whosebug
问题:
我想创建 1.DCM-1.90.0-Linux.tar.gz
和 2.RCM-1.90.0-Linux.tar.gz
包。
我用谷歌搜索,但无法找到确切的解决方案。
如果您需要更多信息,请告诉我。
非常感谢。
我不使用 CPack,所以也许有比以下更好的解决方案。
对于我的不同安装,我在 CACHE 中定义了一些变量(例如:set(INCLUDE_MODULE_XYZ OFF CACHE BOOL "Include the module xyz")
)定义我在我的安装中放入的内容。您可以更改此变量的值 运行 ccmake.
在您的情况下,您可以生成第一个包,使用 ccmake 更改配置,然后生成第二个包(如果需要)。
我只需要将 CPACK 标志设置为 ON。
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
就在
之前include(CPack)
和运行命令。
make
make install
make package
它创建了两个不同的包。