3.17.10. Layout

include/

<project>/

<project>.hpp

lib*/

<project>_<target>

cmake/

<project>/

<project>Config.cmake

bin/

<project>_<target>

cmake/

module/

<project>_<module>.cmake

template/

<project>/

*.cmake.in

script/

<project>/

*.cmake

include/

<project>/

*.cmake

include(GNUInstallDirs)

install(
    TARGETS <project>_<target>_1 <project>_<target>_2
    EXPORT <project>Targets
    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
    INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)

See also

CMake documentation

Linux layout after installation of example project:

├── bin
│   ├── fruits_breakfast*
│   └── fruits_dinner*
├── include
│   └── fruits
│       ├── fruits.hpp
│       ├── FRUITS_ROSACEAE_EXPORT.h
│       ├── FRUITS_TROPICAL_EXPORT.h
│       ├── rosaceae
│       │   ├── Pear.hpp
│       │   ├── Plum.hpp
│       │   └── rosaceae.hpp
│       └── tropical
│           ├── Avocado.hpp
│           ├── Pineapple.hpp
│           └── tropical.hpp
└── lib
    ├── cmake
    │   └── fruits
    │       ├── fruitsConfig.cmake
    │       ├── fruitsConfigVersion.cmake
    │       ├── fruitsTargets.cmake
    │       └── fruitsTargets-release.cmake
    ├── libfruits_rosaceae.a
    └── libfruits_tropical.a

Windows layout after installation of example project:

├── bin
│   ├── fruits_breakfast.exe
│   └── fruits_dinner.exe
├── include
│   └── fruits
│       ├── fruits.hpp
│       ├── FRUITS_ROSACEAE_EXPORT.h
│       ├── FRUITS_TROPICAL_EXPORT.h
│       ├── rosaceae
│       │   ├── Pear.hpp
│       │   ├── Plum.hpp
│       │   └── rosaceae.hpp
│       └── tropical
│           ├── Avocado.hpp
│           ├── Pineapple.hpp
│           └── tropical.hpp
└── lib
    ├── cmake
    │   └── fruits
    │       ├── fruitsConfig.cmake
    │       ├── fruitsConfigVersion.cmake
    │       ├── fruitsTargets.cmake
    │       └── fruitsTargets-release.cmake
    ├── fruits_rosaceae.lib
    └── fruits_tropical.lib

Windows Debug + DLL:

├── bin
│   ├── fruits_breakfast.exe
│   ├── fruits_breakfast.pdb
│   ├── fruits_dinner.exe
│   ├── fruits_dinner.pdb
│   ├── fruits_rosaceaed.dll
│   ├── fruits_rosaceaed.pdb
│   ├── fruits_tropicald.dll
│   └── fruits_tropicald.pdb
├── include
│   └── fruits
│       ├── fruits.hpp
│       ├── FRUITS_ROSACEAE_EXPORT.h
│       ├── FRUITS_TROPICAL_EXPORT.h
│       ├── rosaceae
│       │   ├── Pear.hpp
│       │   ├── Plum.hpp
│       │   └── rosaceae.hpp
│       └── tropical
│           ├── Avocado.hpp
│           ├── Pineapple.hpp
│           └── tropical.hpp
└── lib
    ├── cmake
    │   └── fruits
    │       ├── fruitsConfig.cmake
    │       ├── fruitsConfigVersion.cmake
    │       ├── fruitsTargets.cmake
    │       └── fruitsTargets-debug.cmake
    ├── fruits_rosaceaed.lib
    └── fruits_tropicald.lib