Skip to content

Add installation target#4

Closed
apteryks wants to merge 4 commits into
agruzdev:masterfrom
apteryks:add-installation-target
Closed

Add installation target#4
apteryks wants to merge 4 commits into
agruzdev:masterfrom
apteryks:add-installation-target

Conversation

@apteryks

Copy link
Copy Markdown

This adds an installation target along CMake configuration files for discovery.

The result looks like this on my Guix System:

-- Install configuration: "RelWithDebInfo"
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib/cmake/Yato/YatoConfig.cmake
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib/cmake/Yato/YatoConfigVersion.cmake
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/aligning_allocator.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/any.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/any_match.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/any_ptr.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/array_nd.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/array_proxy.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/array_view.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/assertion.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/atomic_attributes.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/attributes_interface.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/case_dispatcher.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/compressed_pair.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/container_base.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/container_nd.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/dynamic_array.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/filter_iterator.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/finally.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/instance_of.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/interval_map.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/invoke.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/iterator_nd.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/lookup_table.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/memory_utility.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/meta.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/not_null.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/numeric_iterator.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/optional.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/prerequisites.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/primitive_types.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/range.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/reflection.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/singleton.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/stl_utility.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/storage.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/token_iterator.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/transform_iterator.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/tuple.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/type_match.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/type_traits.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/types.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/variant.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/variant_match.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/vector_nd.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/vector_view.h
-- Installing: /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/zip_iterator.h
phase `install' succeeded after 0.0 seconds
starting phase `patch-shebangs'
phase `patch-shebangs' succeeded after 0.0 seconds
starting phase `strip'
stripping binaries in "/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib" with "strip" and flags ("--strip-unneeded" "--enable-deterministic-archives")
phase `strip' succeeded after 0.0 seconds
starting phase `validate-runpath'
validating RUNPATH of 0 binaries in "/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib"...
phase `validate-runpath' succeeded after 0.0 seconds
starting phase `validate-documentation-location'
phase `validate-documentation-location' succeeded after 0.0 seconds
starting phase `delete-info-dir-file'
phase `delete-info-dir-file' succeeded after 0.0 seconds
starting phase `patch-dot-desktop-files'
phase `patch-dot-desktop-files' succeeded after 0.0 seconds
starting phase `make-dynamic-linker-cache'
phase `make-dynamic-linker-cache' succeeded after 0.0 seconds
starting phase `install-license-files'
installing 1 license files from '../source'
phase `install-license-files' succeeded after 0.0 seconds
starting phase `reset-gzip-timestamps'
phase `reset-gzip-timestamps' succeeded after 0.0 seconds
starting phase `compress-documentation'
phase `compress-documentation' succeeded after 0.0 seconds
successfully built /gnu/store/l9lr1ymxi0ciqw0p1j50fr3dm53hagdr-yato-1.1-0.7999c10.drv
find /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10
maxim@terra ~/src/guix-master [env]$ find /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib/cmake
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib/cmake/Yato
cat /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib/cmake/Yato/YatoConfig.cmake
cat /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib/cmake/Yato/YatoConfigVersion.cmake
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/aligning_allocator.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/any_match.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/any_ptr.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/assertion.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/finally.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/instance_of.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/interval_map.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/invoke.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/iterator_nd.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/not_null.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/numeric_iterator.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/prerequisites.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/primitive_types.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/singleton.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/stl_utility.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/storage.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/type_match.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/types.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/variant_match.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/any.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/array_nd.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/array_proxy.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/array_view.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/atomic_attributes.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/attributes_interface.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/case_dispatcher.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/compressed_pair.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/container_base.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/container_nd.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/dynamic_array.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/filter_iterator.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/lookup_table.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/memory_utility.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/meta.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/optional.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/range.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/reflection.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/token_iterator.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/transform_iterator.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/tuple.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/type_traits.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/variant.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/vector_nd.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/vector_view.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/include/yato/zip_iterator.h
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/share
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/share/doc
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/share/doc/yato-1.1-0.7999c10
/gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/share/doc/yato-1.1-0.7999c10/LICENSE
maxim@terra ~/src/guix-master [env]$ cat /gnu/store/x45sl2cjm8wy6caz2qzds9xsvaxk893j-yato-1.1-0.7999c10/lib/cmake/Yato/YatoConfig.cmake

####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
####### Any changes to this file will be overwritten by the next CMake run ####
####### The input file was YatoConfig.cmake.in                            ########

get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)

macro(set_and_check _var _file)
  set(${_var} "${_file}")
  if(NOT EXISTS "${_file}")
    message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
  endif()
endmacro()

macro(check_required_components _NAME)
  foreach(comp ${${_NAME}_FIND_COMPONENTS})
    if(NOT ${_NAME}_${comp}_FOUND)
      if(${_NAME}_FIND_REQUIRED_${comp})
        set(${_NAME}_FOUND FALSE)
      endif()
    endif()
  endforeach()
endmacro()

####################################################################################

include("${CMAKE_CURRENT_LIST_DIR}/YatoTargets.cmake")

@apteryks

Copy link
Copy Markdown
Author

Disclaimer: I used some outputs from chatgpt to prepare this.

@apteryks apteryks force-pushed the add-installation-target branch from c953f38 to 63dd97a Compare May 29, 2026 15:10
This makes it easy to install the library with 'make install',
including the CMake config files for discovery.
@apteryks apteryks force-pushed the add-installation-target branch from 63dd97a to 816b1db Compare May 29, 2026 16:10
@agruzdev

Copy link
Copy Markdown
Owner

Hello. Looks fine, but currently it installs gtest as well.
image
I think it should be avoided (gbench too?)

Also, why version 1.2? I dont remember I had any versioning for Yato, so 1.0 should be ok

@apteryks

Copy link
Copy Markdown
Author

About the 1.2 version, it's because I wanted some version that was never used; and in git there's a v1.1 tagged v1.1 vector_nd: Fixed include guard . I'm looking into the gtest issue.

@agruzdev

Copy link
Copy Markdown
Owner

About the 1.2 version, it's because I wanted some version that was never used; and in git there's a v1.1 tagged v1.1 vector_nd: Fixed include guard .

Wow, I forgot about it.
Then v1.2 is fine, indeed!

Maxim Cournoyer added 2 commits May 31, 2026 23:28
This modernizes how GoogleTest is discovered and used, and integrates
the test suite with CTest.
@apteryks

Copy link
Copy Markdown
Author

I've pushed a commit that changed a few things w.r.t. to how gtest is discovered/used. I think perhaps linking to it as private will fix your problem? target_link_libraries(YatoTests PRIVATE gtest_main), but I'm not sure as I don't reproduce (I don't build it from source -- I use googletest as a system package instead).

@agruzdev

agruzdev commented Jun 7, 2026

Copy link
Copy Markdown
Owner

Well, now I can't build it on Windows without prebuilt gtest

@agruzdev

agruzdev commented Jun 7, 2026

Copy link
Copy Markdown
Owner

I've made an alternative branch based on yours: #5
Please check if it works for you, then I'll merge that PR

@agruzdev agruzdev closed this Jun 17, 2026
@agruzdev

Copy link
Copy Markdown
Owner

Done in #5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants