Re: Copying source file required by target
Steven Watanabe via Boost-build <[email protected]>
| Newsgroups | gmane.comp.lib.boost.build |
|---|---|
| Organization | Providere Consulting, Inc. |
| Message-ID | <[email protected]> |
AMDG
On 07/26/2018 11:08 AM, Mateusz Loskot via Boost-build wrote:
> I'm trying to replicate this CMake'ism for BBv2
>
> f(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/mwe.cpp)
> configure_file(
> ${CMAKE_CURRENT_SOURCE_DIR}/mwe.cpp.in
> ${CMAKE_CURRENT_SOURCE_DIR}/mwe.cpp
> COPYONLY)
> endif()
>
> I'm trying to achieve that with the make rule and simple actions:
>
> make mwe.cpp : mwe.cpp.in : @copy_mwe_if_not_exists ;
> actions copy_mwe_if_not_exists { cp $(>) $(<) }
> exe mwe : mwe.cpp : ;
>
> Basically, this works, but there is one major issue"
> - it creates source file in bin/mwe.cpp.
> How can I force it to create mwe.cpp in the same directory as mwe.cpp.in?
>
> I've tried to hack it modifying target path using the variables
> expansion, but without luck.
>
Since you want to put the file in a fixed place,
use <location>.
> I have also tried to follow the BBv2 generate example based on
> file-target and common.copy action:
> https://github.com/boostorg/build/tree/develop/example/generate
> But constructing a target seems like an overkill for my purpose.
> And, the rule (or common.copy) also creates file in `bin` directory.
>
>
> BTW, I am aware the `copy_mwe_if_not_exists` is incomplete regarding its name:
> - it will have to use cp or copy depending on OS
common.copy does this already.
> - it will have to check if file exists
>
This is the normal behavior of all targets.
(If you don't want to check whether it's out-of-date,
you can mark the target as NOUPDATE.)
In Christ,
Steven Watanabe
_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build