cmake run script for install target?

2019-01-26 15:21发布

问题:

I have a project where "installing" the code is not quite as simple as just copying some files. With a traditional Makefile, I would just create a make install target that runs a series of shell commands to do what I need.

But googling around has resulting in no examples of this (some things close, but not quite... i think). So basically, I want a custom command, that depends on the target executables, but produces nothing and runs a script that need not be portable to accomplish the "install"

Anyone have any examples of something like this?

回答1:

CMake's install command allows for custom scripts. See the official documentation: install - Custom Installation Logic:

install([[SCRIPT <file>] [CODE <code>]]
        [COMPONENT <component>] [...])

The SCRIPT form will invoke the given CMake script files during installation. If the script file name is a relative path it will be interpreted with respect to the current source directory. The CODE form will invoke the given CMake code during installation. Code is specified as a single argument inside a double-quoted string. For example, the code

install(CODE "MESSAGE(\"Sample install message.\")")

will print a message during installation.

To run custom shell script (or whatever program), combine install(CODE ...) with execute_process:

install(CODE "execute_process(COMMAND my_script.sh)")


标签: cmake