Boost logo

Boost-Build :

Subject: [Boost-build] Copying source file required by target
From: Mateusz Loskot (mateusz_at_[hidden])
Date: 2018-07-26 17:08:30


Hi,

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.

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
- it will have to check if file exists

Best regards,

-- 
Mateusz Loskot, http://mateusz.loskot.net

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk