Skip to content

Cannot use if also using CPMAddPackage for LLVM dependency and building Clang #31

@christopherbate

Description

@christopherbate

If a project uses CPM to pull in LLVM and builds the clang project of LLVM, then the target names clang-format and check-clang-format will conflict. Locally I fixed this by adding run- prefixes to each target.

Activity

TheLartians

TheLartians commented on Feb 20, 2022

@TheLartians
Owner

Ah that makes sense, I hadn't considered the LLVM project when I created the target names. To not break existing workflows, perhaps it would make sense to add an option CMAKE_FORMAT_PREFIX that adds a prefix to the target names to avoid such collisions?

Thanks for raising the issue!

TheophileBlard

TheophileBlard commented on Feb 24, 2022

@TheophileBlard

I have the same issue, triggered by find_package(Clang)

CMake Error at /usr/lib/llvm-10/lib/cmake/clang/ClangTargets.cmake:37 (message):
Some (but not all) targets in this export set were already defined.
Targets Defined: clang-format

My current fix is to add CPMAddPackage("gh:TheLartians/Format.cmake@1.7.3") at the end of my CMakeLists.txt, after the find_package(Clang) statement. Adding a CMAKE_FORMAT_PREFIX option would work, but I believe you should ultimately change the default name of the target (such name collision can happen really easily).

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @TheLartians@christopherbate@TheophileBlard

        Issue actions

          Cannot use if also using CPMAddPackage for LLVM dependency and building Clang · Issue #31 · TheLartians/Format.cmake