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