If you run "make help" it will list targets it understands.  And as you
pointed out there is no target for foo.cc.  You can "make foo" but if you
really want a target for foo.cc you can add one yourself:

cmake_minimum_required(VERSION 3.0.0)

project(custom-command-target)

add_custom_command (
  OUTPUT  foo.cc
  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/genFoo > foo.cc
  )

add_custom_target(foo.cc DEPENDS ${CMAKE_BINARY_DIR}/foo.cc)

add_executable (foo foo.cc)

That should create a foo.cc target that you can run that will do the right
thing.

--
Glenn

On 12 June 2015 at 14:20, Dave Yost <[email protected]> wrote:

> 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 <[email protected]>
> 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 <[email protected]>
> *Elküldve:* ‎péntek‎, ‎2015‎. ‎június‎ ‎12‎. ‎2‎:‎00
> *Címzett:* [email protected]
>
> In this example, how do I get
>    make 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/
> ======== CMakeLists.txt
> cmake_minimum_required(VERSION 3.3.0)
>
> project(custom-command-target)
>
>
> add_custom_command (
>   OUTPUT  foo.cc
>   COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/genFoo > foo.cc
>   )
>
> add_executable (foo 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
> make: *** No rule to make target 'foo.cc'.  Stop.
> 2 Thu 16:56:49 yost DaveBook ~/p/c++/cmake/custom-command-target/build
> 374 Z%
>
>
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake
>
-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to