Skip to content

Commit

Permalink
Add documentation on install target.
Browse files Browse the repository at this point in the history
  • Loading branch information
obhi-d committed Nov 30, 2024
1 parent bf474bb commit 336dc08
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
10 changes: 10 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -339,19 +339,29 @@ install(DIRECTORY "${slang_SOURCE_DIR}/include" DESTINATION .)

include(CPack)

# Write basic package config version file using standard CMakePackageConfigHelpers utility
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
"${PROJECT_NAME}ConfigVersion.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)

# Write SlangConfig.cmake which should allow find_pacakage(SLANG) to work correctly
# SlangConfig.cmake will define slang::slang target that can be linked with using
# target_link_libraries. It will also define SLANG_EXECUTABLE export variable that
# should point to slangc if SLANG_ENABLE_SLANGC is ON.
configure_package_config_file(
"${PROJECT_SOURCE_DIR}/cmake/SlangConfig.cmake.in"
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
INSTALL_DESTINATION cmake
)

# Conditionally handle the case for Emscripten where slang does not create linkable
# targets. In this case do not export the targets. Otherwise, just export the
# slang target, as this is the library that is required to use the compiler. This possibly
# should later be expanded to include slang-rhi targets if some program intends to use them,
# but possibly wait for a future request before expanding this export set.
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
install(TARGETS slang EXPORT SlangExportTarget)
install(
Expand Down
25 changes: 25 additions & 0 deletions docs/building.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,31 @@ cmake --build --preset emscripten --target slang-wasm
> Note: If the last build step fails, try running the command that `emcmake`
> outputs, directly.
## Installing

Build targets may be installed using cmake:

```bash
cmake --build . --target install
```

This should install `SlangConfig.cmake` that should allow `find_package` to work.
SlangConfig.cmake defines `SLANG_EXECUTABLE` variable that will point to `slangc`
executable and also define `slang::slang` target to be linked to.

For now, `slang::slang` is the only exported target defined in the config which can
be linked to.

Example usage

```cmake
find_package(slang REQUIRED PATHS ${your_cmake_install_prefix_path} NO_DEFAULT_PATH)
# slang_FOUND should be automatically set
target_link_libraries(yourLib PUBLIC
slang::slang
)
```

## Testing

```bash
Expand Down

0 comments on commit 336dc08

Please sign in to comment.