The following issue has been SUBMITTED. ====================================================================== http://www.cmake.org/Bug/view.php?id=14429 ====================================================================== Reported By: Rob Stewart Assigned To: ====================================================================== Project: CMake Issue ID: 14429 Category: CMake Reproducibility: always Severity: major Priority: normal Status: new ====================================================================== Date Submitted: 2013-09-20 16:17 EDT Last Modified: 2013-09-20 16:17 EDT ====================================================================== Summary: SET_TARGET_PROPERTIES() Broken for COMPILE_DEFINITIONS? Description: According to my efforts, SET_TARGET_PROPERTIES() fails for COMPILE_DEFINITIONS. On the one hand, one might suppose that none of the values should be prefixed by "-D", thinking that the contents of that property will be enumerated and that "-D" or "/D" will be inserted ahead of each value on the command line. That doesn't work. The values appear as set by SET_TARGET_PROPERTIES(). So, one decides to ensure that all values are prefixed by "-D". That doesn't work either, according to what I'm seeing. The problem is that the first one is prefixed by "-D" and none of the rest are. IOW, it seems like SET_TARGET_PROPERTIES(), for COMPILE_DEFINITIONS, expects only one definition, but since one must, in general, use GET_TARGET_PROPERTY() first, to get the current values, then add new definitions, one is very likely to set multiple definitions.
Either SET_TARGET_PROPERTIES() should require "-D" prefixed to each definition, when setting COMPILE_DEFINITIONS, or it should expect that no value is prefixed. I think that SET_TARGET_PROPERTIES() should accept a quoted list (with semicolons), not just a space separated list of values, so I suggest that SET_TARGET_PROPERTIES(target PROPERTIES COMPILE_DEFINITIONS "value") iterate value and prepend "-D", as needed. Since that property is actually used after it is set, I'm really suggesting that the using code do the iteration (SET_TARGET_PROPERTIES() should really just save the values it's given). Steps to Reproduce: SET_TARGET_PROPERTIES(target PROPERTIES COMPILE_DEFINITIONS "a b c") Observe "-Da b c" in the compilation command. SET_TARGET_PROPERTIES(target PROPERTIES COMPILE_DEFINITIONS "-Da -Db -Dc") Observe "-D-Da -Db -Dc" in the compilation command. ====================================================================== Issue History Date Modified Username Field Change ====================================================================== 2013-09-20 16:17 Rob Stewart New Issue ====================================================================== -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers