mimalloc icon indicating copy to clipboard operation
mimalloc copied to clipboard

CMake install with namespace and add corresponding alias targets

Open tkohlman opened this issue 1 year ago • 2 comments

Add namespace to installed export

install(EXPORT mimalloc DESTINATION ${mi_install_cmakedir} NAMESPACE mimalloc::)

Add alias targets to provide consistent targets for submodule builds.

add_library(mimalloc::mimalloc-obj ALIAS mimalloc-obj) add_library(mimalloc::mimalloc-static ALIAS mimalloc-static)

tkohlman avatar May 01 '24 01:05 tkohlman

Thank you for the feedback; I'm not a cmake expert and don't know what the NAMESPACE does? Would adding this be backward compatible or is there a chance of breaking existing build scripts that people have?

daanx avatar Jun 05 '24 00:06 daanx

https://cmake.org/cmake/help/latest/guide/importing-exporting/index.html

Namespaces help to prevent conflicting targets when using add_subdirectory(). The install() call with identical namespace means that builds can reference mimalloc targets/dependencies in a single way, whether building with add_subdirectory() or fetching with find_package().

The alias targets should be backwards compatible. The install step is probably not backwards compatible, but most projects are using namespaces as a CMake best practice.

tkohlman avatar Jul 16 '24 19:07 tkohlman