# How to Simplify build time commands

**URL:** https://discourse.cmake.org/t/how-to-simplify-build-time-commands/5135
**Category:** Usage
**Created:** [March 1, 2022, 7:11am UTC](https://discourse.cmake.org/t/how-to-simplify-build-time-commands/5135 "2022-03-01T07:11:53Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![fabiop](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/f/8e7dd6/32.png) [@fabiop](https://discourse.cmake.org/u/fabiop)
#### Post date: [March 1, 2022, 7:11am UTC](https://discourse.cmake.org/t/how-to-simplify-build-time-commands/5135/1 "2022-03-01T07:11:53Z")

</div>

Hi everyone,  
i’m writing a target for building and uploading at build time a custom target, and i have written a monster like this:

```auto
add_custom_target(targetUploader
        # Install target in installDir within its binary folder
        COMMAND ${CMAKE_COMMAND} --install $<TARGET_PROPERTY:${targetName},BINARY_DIR> --config $<CONFIG> --prefix $<TARGET_PROPERTY:${targetName},BINARY_DIR>/installDir
        # Zip installed headers and upload them on remote repository
        COMMAND ${CMAKE_COMMAND} -E tar cf $<TARGET_PROPERTY:${targetName},BINARY_DIR>/includes.zip $<TARGET_PROPERTY:${targetName},BINARY_DIR>/installDir/${CMAKE_INSTALL_INCLUDEDIR}
        COMMAND ${CMAKE_COMMAND} -Durl=${BASE_URL}/$<CONFIG>/includes/${targetName}/includes.zip -DfileName=$<TARGET_PROPERTY:${targetName},BINARY_DIR>/installDir/${CMAKE_INSTALL_INCLUDEDIR}/includes.zip -P buildTimeNetworking.cmake
        # Zip generated target file and upload it on remote repository
        COMMAND ${CMAKE_COMMAND} -E tar cf $<TARGET_PROPERTY:${targetName},BINARY_DIR>/${targetName}.zip $<TARGET_PROPERTY:${targetName},BINARY_DIR>/installDir/${CMAKE_INSTALL_LIBDIR}/$<TARGET_FILE:${targetName}>
        COMMAND ${CMAKE_COMMAND} -Durl=${BASE_URL}/$<CONFIG>/libs/${targetName}/${targetName}.zip -DfileName=$<TARGET_PROPERTY:${targetName},BINARY_DIR>/installDir/${CMAKE_INSTALL_LIBDIR}/${targetName}.zip -P buildTimeNetworking.cmake
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)

```

Is there a way to simplify build time commands creating variables (that contains generator expressions) to be shared among commands?  
Thanks in advance for any help

---

<div class="post-metadata">

### Author: ![ben.boeckel](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.cmake.org/u/ben.boeckel)
#### Post date: [March 1, 2022, 1:20pm UTC](https://discourse.cmake.org/t/how-to-simplify-build-time-commands/5135/2 "2022-03-01T13:20:54Z")

</div>

You could probably write this as a CMake script that you execute with `-P` after doing `file(GENERATE)` to get the genexes expanded (or pass them as `-D` argument values).

---

<div class="post-metadata">

### Author: ![fabiop](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/f/8e7dd6/32.png) [@fabiop](https://discourse.cmake.org/u/fabiop)
#### Post date: [March 1, 2022, 3:43pm UTC](https://discourse.cmake.org/t/how-to-simplify-build-time-commands/5135/3 "2022-03-01T15:43:16Z")

</div>

Thanks a lot, didn’t know about file(GENERATE) command
