On 03/04/2011 01:56 PM, Orcun Gokbulut wrote: > Hi everybody, > > I came across two problems when I was porting our project build system to > cmake. > > The first program that I encounter is I can not compile generated source > files with extension other than default c/c++ extensions. > > > I have tried; > > > set_property (SOURCE ZEPortalMap.h.zpp PROPERTY LANGUAGE CXX) > > > and this > > > SET (CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${CMAKE_CXX_SOURCE_FILE_EXTENSIONS} > zpp) > > > but they do not work. File's build tool property in visual studio is still > custom build tool instead of c++ compiler. >
have you tried set_source_files_properties()? And if the source is generated, why don't you use a standard extension then? After all, it's under your control... > > 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'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. > > The statements, > > get_property (Result SOURCE ZEPortalMap.h PROPERTY COMPILE_FLAGS) > message (${Result}) > > returns this error message > > CMake Error at Source/ZEMap/ZEPortalMap/CMakeLists.txt:23 (message): > > message called with incorrect number of arguments > > > However if I do this; > > > set_property (SOURCE ZEPortalMap.h PROPERTY COMPILE_FLAGS "-blabla") > get_property (Result SOURCE ZEPortalMap.h PROPERTY COMPILE_FLAGS) > > message (${Result}) > > I get: > -blabla > > on the output. In sort, cmake does not setup default properties for source > files. (maybe for targets, directories, etc. I did not tested) > > 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. > > Of course I know that this problem can be functionality by design. These kinds of properties (AFAIK except the read-only ones) are never initialized with the defaults. If you create such a generic macro, you should always first call get_property(... PROPERTY ... DEFINED) to see whether the property is actually defined. HTH Michael _______________________________________________ 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://www.cmake.org/mailman/listinfo/cmake