Le jeu. 23 août 2018 à 13:02, George PF <george....@mail.com> a écrit :
> Hello, > > following "modern cmake" conventions I want to create a library where > every single file is compiled with an individual define (-D_fileX_, > required for a macro which integrates code into every translation unit). > > So following this > > add_library(mylib SHARED file1.c file2.c) > target_link_libraries(mylib PUBLIC otherlib) > > I'd like to iterate over all "mylib" source file targets and modify them > so that the compiler is called like this: > > cc -c -o file1.o file1.cc -D_file1_define_ > cc -c -o file1.o file2.cc -D_file2_define_ > etc. > > Is this possible? > You can retrieve the sources associated with a target using SOURCES properties. https://cmake.org/cmake/help/latest/prop_tgt/SOURCES.html then https://cmake.org/cmake/help/latest/command/foreach.html with https://cmake.org/cmake/help/latest/command/set_property.html or https://cmake.org/cmake/help/latest/command/set_source_files_properties.html for setting property: https://cmake.org/cmake/help/latest/prop_sf/COMPILE_DEFINITIONS.html on each source file. not sure why you want to do that you know that compiler already defined many "standard" macro for you, like __FILE__ https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html#Standard-Predefined-Macros ? -- Eric
-- 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