Skip to content

Add a target_link_libraries() usage example to Corrade CMake docs #113

@mgood7123

Description

@mgood7123

I followed the instructions from

https://doc.magnum.graphics/corrade/corrade-cmake.html#corrade-cmake-subproject

the test case is https://github.com/mgood7123/Dummy

when building I get

-- Found Corrade: /Users/smallville7123/Desktop/Dummy/corrade/src  found components: Containers rc Utility
CMake Error at CMakeLists.txt:26 (target_link_libraries):
  Target "Corrade" of type UTILITY may not be linked into another target.
  One may link only to INTERFACE, OBJECT, STATIC or SHARED libraries, or to
  executables with the ENABLE_EXPORTS property set.

the CMakeFile is https://github.com/mgood7123/Dummy/blob/main/CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

project(Dummy)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# https://doc.magnum.graphics/corrade/corrade-cmake.html#corrade-cmake-subproject

set(WITH_CONTAINERS ON CACHE BOOL "" FORCE)
set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE)
set(WITH_UTILITY ON CACHE BOOL "" FORCE)
set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE)
set(WITH_RC OFF CACHE BOOL "" FORCE)
add_subdirectory(corrade EXCLUDE_FROM_ALL)

# Path where FindCorrade.cmake can be found, adapt as needed
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/corrade/modules/" ${CMAKE_MODULE_PATH})
find_package(Corrade REQUIRED Utility Containers)

include_directories(corrade/src)
add_library(Dummy SHARED src/dummy.cpp)
if (ANDROID)
    target_link_libraries(Dummy Corrade Corrade::Containers Corrade::Utility android log)
else()
    target_link_libraries(Dummy Corrade Corrade::Containers Corrade::Utility)
endif()

this happens even if I disable everything

cmake_minimum_required(VERSION 3.4.1)

project(Dummy)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# https://doc.magnum.graphics/corrade/corrade-cmake.html#corrade-cmake-subproject

set(WITH_CONTAINERS OFF CACHE BOOL "" FORCE)
set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE)
set(WITH_UTILITY OFF CACHE BOOL "" FORCE)
set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE)
set(WITH_RC OFF CACHE BOOL "" FORCE)

add_subdirectory(corrade EXCLUDE_FROM_ALL)

# Path where FindCorrade.cmake can be found, adapt as needed
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/corrade/modules/" ${CMAKE_MODULE_PATH})
find_package(Corrade REQUIRED)

include_directories(corrade/src)
add_library(Dummy SHARED src/dummy.cpp)
if (ANDROID)
    target_link_libraries(Dummy Corrade android log)
else()
    target_link_libraries(Dummy Corrade)
endif()

what could I be doing incorrectly?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    TODO

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions