ned14 / status-code

Proposed SG14 status_code for the C++ standard

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

buildsystem: include directories vs target sources

BurningEnlightenment opened this issue · comments

The vcpkg port moves all headers into a status-code subdirectory:
file(RENAME "${CURRENT_PACKAGES_DIR}/include2" "${CURRENT_PACKAGES_DIR}/include/status-code")
https://github.com/microsoft/vcpkg/blob/eddbb406cff0ff7828592d5a92e64abb59808534/ports/status-code/portfile.cmake#L25-L26

This, however, is incompatible with the install interface target sources which expect the headers to directly reside in the include directory:

status-code/CMakeLists.txt

Lines 109 to 111 in 42d3afa

target_sources(status-code INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/${source}>"
"$<INSTALL_INTERFACE:${source}>"

Additionally I find install interface target sources to be annoying, because e.g. the cmake VS solution generator adds them to all (transitively) depending targets. What was the rationale for referencing all headers from the installed target? Can we do without?

Am I being dumb here or isn't the right fix just to fix how cmake does the install so it's right, and then the vcpkg port doesn't need to rename anything?

Yes, probably. Is it intended to look like #include <status-code/status_code.hpp> or #include <status_code.hpp>?

Anyway, can we do without the target sources for installed targets? My issue looks like this:
grafik

I'd make a PR.

Note that we can't update Outcome to match this until after the pending Boost release.