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