pnoltes commented on code in PR #453:
URL: https://github.com/apache/celix/pull/453#discussion_r1045087559
##########
cmake/cmake_celix/ContainerPackaging.cmake:
##########
@@ -263,7 +264,16 @@
$<JOIN:$<TARGET_PROPERTY:${CONTAINER_TARGET},CONTAINER_EMBEDDED_PROPERTIES>,\\n\
"
)
- file(GENERATE OUTPUT "${LAUNCHER_SRC}" INPUT "${STAGE1_LAUNCHER_SRC}")
+ #Rerun generate to do a second parsing of generator expressions
+ file(GENERATE OUTPUT "${STAGE2_LAUNCHER_SRC}" INPUT
"${STAGE1_LAUNCHER_SRC}")
Review Comment:
Indeed the second stage is needed to parse another set of generation
expression.
Example given a celix container:
```
add_celix_container(Example NO_COPY BUNDLES Celix::shell)
```
Then the first stage will replace
`$<TARGET_PROPERTY:Example,BUNDLES_CONTAINER_BUNDLES_LEVEL_3>` into a space
separated list of bundles, which in this case would be
`"$<TARGET_PROPERTY:Celix::Shell,BUNDLE_FILE> "`.
And the second stage will replace
`$<TARGET_PROPERTY:Celix::Shell,BUNDLE_FILE>` to the absolute path to the Celix
shell bundle.
I added the custom command to ensure that the launcher src is only updated
if the stage 2 is different. I though this was needed to prevent rebuilding
executable when running `cmake . ; make -j`, but seeing the cmake documentation
this should not be the case. From the cmake latest file(GENERATE ...)
documentation
"
Generated files are modified and their timestamp updated on subsequent cmake
runs only if their content is changed.
"
I will retest if the add_custom_command is really needed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]