On Thursday 17 April 2008, Mark Jonas wrote: > Hi Alex, > > thanks for your input. > > > > How do I tell the custom command to run when the linker will be > > > called? It should not run always because that would cause the linker > > > to be called whenever I call make. > > > > You could use something like: > > ADD_CUSTOM_COMMAND(TARGET target POST_BUILD > > COMMAND touch build_timestamp.c) > > I tried that before and it has a bad side effect: The linker is now > called every time I run make although the source did not change. What > I am shooting for is that build_timestamp.c is compiled only when the > application would be linked anyhow. > > Additionally, the solution uses a command that wouldn't work if the > output of CMake would be e.g. a Visual Studio project. > > > then the file will be newer than the executable everytime the executable > > is built (and have build_timestamp.c part of your regular set of source > > files). > > Exactly. You might be asking now why I am insisting not calling the > linker when it is not really necessary. The reason is that the > application I would like to use CMake with has about 1,000,000 source > lines. Linking the little monster takes about 5 minutes on a modern > PC. > > Do you have another idea?
Hmm, so you need to execute something in case something will actually be built. I don't see a clean way, only hacks: Maybe you can do something with add_custom_target() ? add_custom_target(DateHelperTarget COMMAND your_fancy_date_tool) add_executable(monsterapp ${sources}) add_dependencies(monsterapp DateHelperTarget) This way DateHelperTarget would be always built before monsterapp. It would be up to you to do something clever in your_fancy_date_tool. Or create a static lib containing just that date file and link it to the executable. Build that static lib everytime and use add_custom_command(POST_BUILD) on that static lib to set its date back, so its older than the executable and will not cause linking ? Alex _______________________________________________ CMake mailing list CMake@cmake.org http://www.cmake.org/mailman/listinfo/cmake