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 <[email protected]> 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 <[email protected]> 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
