I’ve run into similar problems, but I think this is by design: CMake isn’t going to let you do anything to a target until that target exists. For me, it was pretty straightforward to adjust my CMakeLists to satisfy the requirement.
If you don’t want to split apart your macro, one thing you might try is checking for the existence of the target inside your macro, and then creating it if it doesn’t. Something like: IF (NOT TARGET targetName) ADD_LIBRARY(targetName ${sources} ${sources_no_pch} ${headers}) ENDIF () You would need additional parameters in your macro, which could make this pretty messy. Parag Chandra Senior Software Engineer, Mobile Team Mobile: +1.919.824.1410 [https://www.ionicsecurity.com/IonicSigHz.png]<https://ionic.com> Ionic Security Inc. 1170 Peachtree St. NE STE 400, Atlanta, GA 30309 From: Glenn Coombs <glenn.coo...@gmail.com<mailto:glenn.coo...@gmail.com>> Reply-To: "glenn.coo...@gmail.com<mailto:glenn.coo...@gmail.com>" <glenn.coo...@gmail.com<mailto:glenn.coo...@gmail.com>> Date: Tuesday, June 30, 2015 at 9:16 AM To: cmake Mailing List <cmake@cmake.org<mailto:cmake@cmake.org>> Subject: [CMake] Cannot add target-level dependencies to non-existent target I am getting the error in the subject. The code I have looks like this: if (PRE_COMPILED_HEADERS_FOUND) ADD_PRECOMPILED_HEADER(${header_pch} ${source_pch} sources systemc) endif() add_library(systemc ${sources} ${sources_no_pch} ${headers}) where the call to add_dependency is in the ADD_PRECOMPILED_HEADER macro and is adding a dependency on the systemc target about to be created on the next line. I could split the macro into 2 and call one before the add_library and one after the add_library but that is rather messy. At the point I try to add the dependency the target does not exist, but it is added shortly after. Is this the way CMake is supposed to behave or should it only cause an error if the target doesn't exist at generate time ? -- Glenn
-- 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: http://public.kitware.com/mailman/listinfo/cmake