Well, it seems then that this is a bug in CMake and I haven't seen anything in the recent commit logs indicating that this has been fixed.
If you have the time, I think the CMake-developers would be glad if you created a bug-report (http://public.kitware.com/Bug) detailing the problem and your analysis of it together with a small test case showing the problem as an attachment. Michael On 31. Mar, 2010, at 14:47 , elizabeta petreska wrote: > I am using cmake 2.8.1. > But you are right, Visual studio 2010 is not relased yet. So I guess I can > not except everything to works well. I will wait till Visual Studio 2010 is > released and maybe some more time after that :) > > On Wed, Mar 31, 2010 at 2:40 PM, Michael Wild <them...@gmail.com> wrote: > >> Well, VS-2010 isn't even released so far... Which exact version of CMake >> are you using by the way? 2.8 or 2.8.1? If I remember correctly, there were >> some improvements in 2.8.1 w.r.t. VS-2010. >> >> Michael >> >> >> On 31. Mar, 2010, at 14:28 , elizabeta petreska wrote: >> >>> If I use Visual Studio 2005 generator everything works well. >>> >>> But, it seems that Visual Studio 2005 does not require the input file ( >> in >>> this case foo.txt.rule ) to Custom Build Step to exist on disk. So the >>> Visual Studio 2005 generator never makes foo.txt.rule to the disk, but >> the >>> whole thing still works. >>> >>> While in Visual Studio 2010 it seems that the input file to custom build >>> step must exist on disk. >>> >>> I tested this with defining Custom Build Steps directly through The >> Visual >>> Studio 2005 and Visual studio 2010 IDE. >>> >>> So , someone can say is this a bug in the Visual Studio 2010 generator? >>> >>> thank you >>> >>> >>> On Wed, Mar 31, 2010 at 2:09 PM, Michael Wild <them...@gmail.com> wrote: >>> >>>> CC-ing back to the mailing list... >>>> >>>> Sorry, I don't know why this fails and I don't have VS-2010 around. What >>>> happens if you use a different generator? >>>> >>>> Michael >>>> >>>> On 31. Mar, 2010, at 14:05 , elizabeta petreska wrote: >>>> >>>>> Hello >>>>> >>>>> Thank you for the reply. >>>>> I test your suggestion. >>>>> It still generates foo.txt every time I build the solution. >>>>> >>>>> I think that this behavior is because foo.txt.rule file is not >> generated >>>> i.e >>>>> doesnot exist on disk. Here is the relevant part in the generated >>>> .vcxproj >>>>> project file : >>>>> >>>>> >>>>> <CustomBuild Include="$(Configuration)\Foo.txt.rule"> // Foo.txt.rule >>>>> doesnot exist >>>>> >>>>> <Message >>>>> Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating >>>>> $(Configuration)/Foo.txt</Message> >>>>> >>>>> <Command >>>> Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">echo >>>>> Foo > >> C:/project2/build_cmake_vs10/$(Configuration)/Foo.txt</Command> >>>>> >>>>> <AdditionalInputs >>>>> >>>> >> Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">C:project2/build_cmake_vs10/$(Configuration)/Foo.txt.rule;C:project2\myfile.txt;%(AdditionalInputs)</AdditionalInputs> >>>>> >>>>> <Outputs >>>>> >>>> >> Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">C:\project2\build_cmake_vs10\$(Configuration)\Foo.txt;%(Outputs)</Outputs> >>>>> >>>>> >>>>> If I change the add_custom_command to the following then foo.txt.rule >> is >>>>> made by cmake, and it works : >>>>> >>>>> set(outfile "Foo.txt") >>>>> add_custom_command(OUTPUT "${outfile}" >>>>> COMMAND echo Foo > "${outfile}" >>>>> DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/myfile.txt" >>>>> ) >>>>> add_custom_target(Foo DEPENDS "${outfile}") >>>>> >>>>> In this case it works because foo.txt.rule is made by cmake on disk in >>>> the >>>>> folder ${CMAKE_CURRENT_BINARY_DIR} i.e C:\project2\build_cmake_vs10 >>>>> >>>>> Someone can say what is the difference if I use CMAKE_CFG_INTDIR in >> the >>>>> outputs of add_custom_command. >>>>> >>>>> Thanks >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Wed, Mar 31, 2010 at 1:27 PM, Michael Wild <them...@gmail.com> >> wrote: >>>>> >>>>>> >>>>>> On 31. Mar, 2010, at 12:07 , elizabeta petreska wrote: >>>>>> >>>>>>> Hello >>>>>>> >>>>>>> I am using cmake 2.8 to generate Visual Studio 2010 solution files. >>>>>>> >>>>>>> I have the following cmakelists.txt : >>>>>>> >>>>>>> set(PROJECT_NAME Test2) >>>>>>> PROJECT(${PROJECT_NAME}) >>>>>>> >>>>>>> FILE(GLOB Test_SRCS >>>>>>> main.cpp >>>>>>> ) >>>>>>> >>>>>>> >>>>>>> ADD_EXECUTABLE(${PROJECT_NAME} >>>>>>> ${Test_SRCS} >>>>>>> ) >>>>>>> >>>>>>> >>>>>>> ADD_CUSTOM_COMMAND (OUTPUT "$(ConfigurationName)/Foo.txt" >>>>>>> COMMAND echo Foo > "$(ConfigurationName)/Foo.txt" >>>>>>> DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/myfile.txt >>>>>>> ) >>>>>>> ADD_CUSTOM_TARGET (Foo DEPENDS "$(ConfigurationName)/Foo.txt") >>>>>>> ADD_DEPENDENCIES(${PROJECT_NAME} Foo) >>>>>>> >>>>>>> The problem is that Foo.txt is generated on every build on the >> solution >>>>>>> although myfile.txt is not changed. >>>>>> >>>>>> Use absolute paths in the OUTPUT and DEPENDS options. And you should >>>> also >>>>>> use the CMAKE_CFG_INTDIR variable instead of $(ConfigurationName)... >>>>>> >>>>>> set(outfile "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/Foo.txt") >>>>>> add_custom_command(OUTPUT "${outfile}" >>>>>> COMMAND echo Foo > "${outfile}" >>>>>> DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/myfile.txt" >>>>>> ) >>>>>> add_custom_target(Foo DEPENDS "${outfile}") >>>>>> >>>>>> >>>>>> 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