<div>Hi everybody,</div><div><br></div><div>I came across two problems when I was porting our project build system to cmake.</div><div><br></div><div><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
The first program that I encounter is I can not compile generated source files with extension other than default c/c++ extensions.</p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
<br></p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">I have tried;</p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
<br></p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">set_property (SOURCE ZEPortalMap.h.zpp PROPERTY LANGUAGE CXX)</p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
<br></p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">and this</p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
<br></p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">SET (CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${CMAKE_CXX_SOURCE_FILE_EXTENSIONS} zpp)</p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
<br></p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">but they do not work. File&#39;s build tool property in visual studio is still custom build tool instead of c++ compiler.</p>
<p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; "><br></p><p style="text-align: left; margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
While I was investigating the problem I came across another problem; I can not read default values of a source property. In more generic terms value of a source file property (I don&#39;t known whether this applies to target/directory/global properties) is not defined unless it is defined by a set command. However, those properties has build in default values that are also overwritten by set functions. So there is no way of getting default values of these properties.</p>
</div><div><br></div><div>The statements,</div><div><br></div>get_property (Result SOURCE ZEPortalMap.h PROPERTY COMPILE_FLAGS)<div>message (${Result})</div><div><br></div><div>returns this error message </div><div><br></div>
<div><span style=" color:#ff0000;">CMake Error at Source/ZEMap/ZEPortalMap/CMakeLists.txt:23 (message):</span><p></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#ff0000;">  message called with incorrect number of arguments</span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">
<font class="Apple-style-span" color="#FF0000"><br></font></p><p style="text-align: left;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">However if I do this;</p><p style="text-align: left;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
<br></p><p style="text-align: left;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">set_property (SOURCE ZEPortalMap.h PROPERTY COMPILE_FLAGS &quot;-blabla&quot;)</p><div>get_property (Result SOURCE ZEPortalMap.h PROPERTY COMPILE_FLAGS)</div>
<p style="text-align: left;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; "></p><div>message (${Result})</div><div><br></div><div>I get:</div><div>-blabla</div><div><br></div><div>
on the output. In sort, cmake does not setup default properties for source files. (maybe for targets, directories, etc. I did not tested) </div><div><br></div><div>This causes (or can cause) problems for generic build system macros. Generic macros can not depend on reading current value of a source/target/directory properties because that property may not  be instantiated by set function.</div>
<div><br></div><div>Of course I know that this problem can be functionality by design.</div><p style="text-align: left;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; "><br></p>
<p style="text-align: left;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">Best regards,</p><p style="text-align: left;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; text-indent: 0px; ">
Orçun</p></div>