boostorg / boost_install

8 stars 32 forks source link

cmake: INTERFACE_COMPILE_DEFINITIONS are overwritten in the variant configuration files #23

Closed david-sinuela-pix4d closed 4 years ago

david-sinuela-pix4d commented 4 years ago

There is a conflict between the common config file and the variants. The INTERFACE_COMPILE_DEFINITIONS set in:

https://github.com/boostorg/boost_install/blob/8ca34abf2ce90dc6f90123b6d4fbde096e21f75e/boost-install.jam#L623-L625

are overwritten in the variant files in:

https://github.com/boostorg/boost_install/blob/8ca34abf2ce90dc6f90123b6d4fbde096e21f75e/boost-install.jam#L368-L370

This does not show up as a bug because most targets depend on Boost::headers and they will get BOOST_ALL_NO_LIB transitively from it. On the other hand some libraries do not depend on Boost::headers (I could see Boost::math an Boost::exception).

I am not sure if the intention was to extend or overwrite but it sounds more logical to me to provide common properties in the common config file and specialize (extend) in the variant files. In any case I noticed this when I was patching the common file and the extra settings did not appear in the final build.

I will start a PR with a fix.

pdimov commented 4 years ago

Thanks.