Skip to content

CMake targets are not exported #208

@diegoferigo

Description

@diegoferigo

I am checking the best way to link PhysX against targets of my CMake project. The documentation reports the steps to add the include directories and the linked libraries.

However, considering that PhysX has a very good CMake structure, it would be great if the targets were directly exported by CMake.

I found that an export set already exists:

INSTALL(
TARGETS ${PHYSXDISTRO_LIBS}
EXPORT PhysXSDK
DESTINATION $<$<CONFIG:debug>:${PX_ROOT_LIB_DIR}/debug>$<$<CONFIG:release>:${PX_ROOT_LIB_DIR}/release>$<$<CONFIG:checked>:${PX_ROOT_LIB_DIR}/checked>$<$<CONFIG:profile>:${PX_ROOT_LIB_DIR}/profile>
)

But it is never installed. This means that something similar is missing:

INSTALL(
    EXPORT PhysXSDK
    DESTINATION ...
    NAMESPACE PhysX)

The final goal is having properly exported targets that transitively carry properties. Exporting the targets, together with a proper package config file, would allow user code to do the following:

# Add the install prefix to the CMake search path.
# It would be compatible also if users install outside the PhysX repo folder.
list(APPEND CMAKE_PREFIX_PATH "/path/to/repo/PhysX/install/linux/PhysX"

find_package(PhysX 4.1.1 REQUIRED COMPONENTS PhysX PhysXCommon PhysXCooking PhysXGpu ...)

add_library(MyLibrary SHARED src/mylibrary.cpp)
target_link_library(MyLibrary PhysX::PhysX PhysX::PhysXCommon PhysX::PhysXGpu ...)

Note that in this way users do not have to specify anything but the linked imported target. As a bonus user would also get a proper release matching.

Resources:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions