Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CMake: How to pack a target/file into multiple packages in Linux?

Tags:

cmake

I'm working on a project which generates quite a few executables, libraries and configs, they need to be packed into different packages for deployment. The problem is, the inclusion of those targets/files is not mutual exclusive. One target/file can belong to multiple packages.

I'm using CMake 2.8.9 and trying CPack. I know it's kind of doable with install types. But my platform is Ubuntu, so on Archives/Debs are acceptable and they don't seem to support that.

With components/groups/parent groups it seems only possible to pack one target/file into one component/group.

Is there any way out of this?

Thanks

like image 279
Ralph Zhang Avatar asked Nov 02 '12 08:11

Ralph Zhang


2 Answers

Why not use components? If I got it right, you want to generate more then one deb from your project.

I am achieving that like this:

SET(CPACK_DEB_COMPONENT_INSTALL 1)

INSTALL(TARGETS buildA DESTINATION lib/myproj COMPONENT main)
INSTALL(TARGETS buildB DESTINATION include/myproj COMPONENT dev)

When I call make package I get two deb's with the suffixes main and dev containing only what I specified with the INSTALL() statements.

like image 156
padde Avatar answered Sep 30 '22 16:09

padde


Well, I'll answer it myself for convinience of late comers: from CMake mail list, I got the answer: with cmake 2.8.9 or earlier (so far), run CPack multiple times with different component settings. That's a bit adhoc but does the job.

like image 26
Ralph Zhang Avatar answered Sep 30 '22 16:09

Ralph Zhang