> I cc the list because I think you drop it inadvertently. Ah, thanks. I'll pay more attention to that now.
> Le mar. 28 août 2018 à 16:18, George PF <george.p.f at mail.com> a écrit : > > > > Because generator expressions are not handled in every cmake construct: > > > > > https://cmake.org/cmake/help/v3.12/manual/cmake-generator-expressions.7.html > > > > > > genex is probably not handled in foreach. > > > > That is a harsh limitation, set() or list() also does not expand this > > expression. > > > > genex are evaluated during "Generation time" i.e. when CMake > produces/generates the specific build system > files (makefile, [build|rules].ninja, MSVC solution etc...). This is > convenient because some (most of) genex informations > may be generator specific (library file name, build artefact location, > etc...) > > https://stackoverflow.com/questions/46206495/cmake-generator-expressions > > set() , list(), foreach() are "running" at "CMake time" i.e. when cmake > runs and processes CMakeLists.txt and other cmake scripts > that is before "Generation time". > > > And the variable XYZ, when set via this indirection to TARGET_OBJECTS, > > > > add_library(lib12 SHARED $<TARGET_OBJECTS:objlib12>) > > get_property(XYZ TARGET lib12 PROPERTY SOURCES) > > > > is also not expanded yet. Is there a workaround regarding the generator > > expressions, or > > another way to get the TARGET_OBJECTS of an object library (and why is > > this hidden > > behind a generator and not available as a property)? > > > > My opinion (but I may be proven wrong by others) is that genex contains > generator specific bits that cannot be **evaluated** > until the build system is generated. Properties (on target, or directory, > or files) contains informations that is available as soon > as the corresponding CMakeLists.txt part defining the object has been > processed. That seems more like an internal cmake limitation. Though maybe on purpose so the scripts can not be tailored for just one backend. And the documentation says quite optimistically: "Generator expressions are allowed in the context of many target properties", a more restrictive phrasing - "only works with X / Y for reasons Z" would help there. -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake
