[CMake] output of add_custom_command as target in Makefile

Dave Yost Dave at Yost.com
Fri Jun 12 09:20:23 EDT 2015


I’m not doing it wrong. Remember, this is a simplified example.

We want to be able to make foo.cc so we can look at it and compare it. Yes, we could make foo and then look at foo.cc, but until foo.cc is right, we will suffer a lot of compiler error clutter. When foo.cc looks right, then we will make foo.

BTW, changing add_custom_command to add_custom_target has no apparent effect and doesn’t help.

> On 2015-06-12, at 12:24 AM, Nagy-Egri Máté Ferenc <csiga.biga at aol.com> wrote:
> 
> You’re doing it all wrong. You do not name source files as make targets, but the target name (or project name, I have no idea, because it rarely makes sense to name them differently). Try simply “foo” or “custom-command-target”. You would never say “make foo.cpp”, not even in an ordinary GNU Make script.
> 
> Feladó: Dave Yost <mailto:Dave at Yost.com>
> Elküldve: ‎péntek‎, ‎2015‎. ‎június‎ ‎12‎. ‎2‎:‎00
> Címzett: cmake at cmake.org <mailto:cmake at cmake.org>
> 
> In this example, how do I get
>    make foo.cc <http://foo.cc/>
> to work?
> 
> 0 Thu 16:56:19 yost DaveBook ~/p/c++/cmake/custom-command-target
> 369 Z% bundle CMakeLists.txt genFoo
> #!/usr/bin/env unbundle
> # See http://yost.com/computers/bundle/ <http://yost.com/computers/bundle/>
> ======== CMakeLists.txt
> cmake_minimum_required(VERSION 3.3.0)
> 
> project(custom-command-target)
> 
> 
> add_custom_command (
>   OUTPUT  foo.cc <http://foo.cc/>
>   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/genFoo > foo.cc <http://foo.cc/>
>   )
> 
> add_executable (foo foo.cc <http://foo.cc/>)
> 
> ======== genFoo
> #!/bin/bash
> 
> echo "
> int main() {
>   return 0;
> }"
> ========
> 0 Thu 16:56:23 yost DaveBook ~/p/c++/cmake/custom-command-target
> 370 Z% cd build                                                
> 0 Thu 16:56:36 yost DaveBook ~/p/c++/cmake/custom-command-target/build
> 371 Z% cmake ..                                                
> -- Configuring done
> -- Generating done
> -- Build files have been written to: /Users/yost/p/c++/cmake/custom-command-target/build
> 0 Thu 16:56:41 yost DaveBook ~/p/c++/cmake/custom-command-target/build
> 372 Z% make clean                                              
> 0 Thu 16:56:45 yost DaveBook ~/p/c++/cmake/custom-command-target/build
> 373 Z% make foo.cc <http://foo.cc/>                                             
> make: *** No rule to make target 'foo.cc <http://foo.cc/>'.  Stop.
> 2 Thu 16:56:49 yost DaveBook ~/p/c++/cmake/custom-command-target/build
> 374 Z% 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150612/a0f72410/attachment.html>


More information about the CMake mailing list