CMake 프로젝트 용 구성 파일 만들기

jjcasmar

내가 가지고있는 샘플 프로젝트에 대한 구성 CMake 파일을 생성하려고합니다. 내 예제는 내부적으로 spdlog를 사용하고 인터페이스에서 고유 한 라이브러리를 사용하는 라이브러리와 라이브러리를 사용하는 애플리케이션의 두 CMake 프로젝트로 구성됩니다. 아이디어는 응용 프로그램이 라이브러리를 찾을 수 있도록 Config.cmake 파일을 만드는 방법을 배우는 것입니다. 이것이 내가 가진 것입니다.

cmake_minimum_required(VERSION 3.16)
project(tutorial-4 CXX)

set(CMAKE_CXX_STANDARD 14)

find_package(Eigen3 REQUIRED)

set(LIBRARY_SOURCES
    Lib/lib.cpp)

set(LIBRARY_HEADERS
    Lib/lib.h)

add_library(smalllib-4
    SHARED
    ${LIBRARY_SOURCES}
    ${LIBRARY_HEADERS}
    )

find_package(spdlog REQUIRED)
find_package(Eigen3 REQUIRED)

target_link_libraries(smalllib-4
    PRIVATE spdlog::spdlog
    PUBLIC Eigen3::Eigen)

target_include_directories(smalllib-4 PUBLIC
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
  $<INSTALL_INTERFACE:include>
)

set_target_properties(smalllib-4 PROPERTIES PUBLIC_HEADER ${LIBRARY_HEADERS})

install(TARGETS smalllib-4
        EXPORT smalllib
        RUNTIME DESTINATION bin
        LIBRARY DESTINATION lib
        ARCHIVE DESTINATION lib/static
        PUBLIC_HEADER DESTINATION include/Lib)

install(EXPORT smalllib NAMESPACE smalllib:: DESTINATION share/smalllib)
include(CMakePackageConfigHelpers)
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
    ${CMAKE_CURRENT_BINARY_DIR}/smalllibConfig.cmake
    INSTALL_DESTINATION share/smalllib
    )

install(FILES
    ${CMAKE_CURRENT_BINARY_DIR}/smalllibConfig.cmake
    DESTINATION share/smalllib
    )

이것은 smalllibConfig.cmake를 성공적으로 생성하지만하려고 할 때 find_package(smalllib REQUIRED)다음 오류가 발생합니다.

CMake Error at CMakeLists.txt:10 (add_executable):
  Target "smallapp" links to target "Eigen3::Eigen" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?

이것은 생성 된 smalllib.cmake에 다음이 있기 때문에 발생합니다.

add_library (smalllib :: smalllib-4 SHARED IMPORTED) 

set_target_properties (smalllib :: smalllib-4 PROPERTIES 
  INTERFACE_INCLUDE_DIRECTORIES "$ {_ IMPORT_PREFIX} / include" 
  INTERFACE_LINK_LIBRARIES "Eigen3 :: Eigen" 
)

그러나 Eigen3::Eigen여기에 정의되어 있지 않습니다.

Eigen은 라이브러리의 종속성이므로 애플리케이션에 추가하는 것이 최신 CMake를 사용하는 올바른 방법이 아닌 것 같습니다. CMake 용 구성 파일을 만드는 일반적인 방법은 무엇입니까?

Tsyvarev

smalllib패키지 의 구성 파일은 Eigen3::Eigen대상 을 정의해야합니다 . 가장 직접적인 접근 방식은 패키지 자체에 에서 사용하는 것처럼 Eigen3에 find_dependency 매크로를 사용 하는 것입니다.find_packageCMakeLists.txt

Config.cmake.in (이 파일은 결과 구성 파일의 템플릿으로 사용됨) :

# Get definition of 'find_dependency' macro
include(CMakeFindDependencyMacro)
# Find Eigen3. This will create 'Eigen3::Eigen' target
find_dependency(Eigen3)

# Include CMake-generated config file for the 'smalllib' target
# which uses 'Eigen3::Eigen' target.
include(${CMAKE_CURRENT_LIST_DIR}/smalllib.cmake)

이 방법은 패키징 에 대한 CMake 문서설명되어 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CMake를 사용하여 프로젝트 빌드 폴더에 git 커밋 ID 파일 만들기

분류에서Dev

기존 QMake 프로젝트 (.pro 프로젝트 파일)를 CMake에서 "외부 프로젝트"로 사용하는 방법은 무엇입니까?

분류에서Dev

CMake를 사용하여 동일한 솔루션에서 C # 및 C ++ / CLR 프로젝트 만들기 (Visual Studio를 대상으로하는 CMake)

분류에서Dev

Unity 프로젝트 C # 용 이름 생성기 만들기

분류에서Dev

find_package CMake에 사용할 수있는 외부 프로젝트 만들기

분류에서Dev

Qt5 문제를 사용하는 업스트림 프로젝트를위한 CMake 패키지 구성 파일

분류에서Dev

SBT 기반 스칼라 프로젝트에서 파일 구성

분류에서Dev

javafxports Android 프로젝트에서 구성 파일 찾기 문제

분류에서Dev

기존 C 파일을 사용하여 Eclipse 프로젝트에서 생성

분류에서Dev

Haxe : JSON 파일 용 코드 완성 매크로 만들기

분류에서Dev

github의 CMake / C ++ 프로젝트 구성

분류에서Dev

cmake로 구성된 Visual Studio 프로젝트의 C ++ 11 지침에서 컴파일러 실패

분류에서Dev

재사용 가능한 프로젝트 및 솔루션 구조 만들기

분류에서Dev

PcapPlusPlus를 사용하도록 Qt 프로젝트 (.pro 파일) 구성

분류에서Dev

Android Studio : 라이브러리 프로젝트 용 구성 Gradle 파일

분류에서Dev

XCode 컴파일러 오류, CMake를 사용하여 빌드 된 프로젝트

분류에서Dev

Js 프로젝트 파일 구성

분류에서Dev

lib 및 실행 파일을위한 C ++ CMake 프로젝트 구조

분류에서Dev

.JSON 파일을 사용하여 블로그 게시물 구성 도우미 만들기

분류에서Dev

Qt 용 텍스트 파일 만들기

분류에서Dev

CMake 생성 Xcode 프로젝트가 컴파일되지 않습니다.

분류에서Dev

cmake 프로젝트에서 emscripten을 사용하여 비트 코드 (.bc 파일)를 생성하는 방법은 무엇입니까?

분류에서Dev

CMake에서 Visual Studio 프로젝트를 만들 때 Visual Studio가 실행 파일을 찾지 못함

분류에서Dev

CMake에서 Visual Studio 프로젝트를 만들 때 Visual Studio가 실행 파일을 찾지 못함

분류에서Dev

Windows Form으로 구성 파일 만들기

분류에서Dev

유용한 로그 파일을 만들기 위해 텍스트 파일 구문 분석

분류에서Dev

Clion, 프로젝트에서 C ++로 새 파일 만들기

분류에서Dev

응용 프로그램에서 사용되는 데이터를 저장하기위한 구성 파일 만들기

분류에서Dev

텍스트 파일을 사용하여 구조체 배열 만들기

Related 관련 기사

  1. 1

    CMake를 사용하여 프로젝트 빌드 폴더에 git 커밋 ID 파일 만들기

  2. 2

    기존 QMake 프로젝트 (.pro 프로젝트 파일)를 CMake에서 "외부 프로젝트"로 사용하는 방법은 무엇입니까?

  3. 3

    CMake를 사용하여 동일한 솔루션에서 C # 및 C ++ / CLR 프로젝트 만들기 (Visual Studio를 대상으로하는 CMake)

  4. 4

    Unity 프로젝트 C # 용 이름 생성기 만들기

  5. 5

    find_package CMake에 사용할 수있는 외부 프로젝트 만들기

  6. 6

    Qt5 문제를 사용하는 업스트림 프로젝트를위한 CMake 패키지 구성 파일

  7. 7

    SBT 기반 스칼라 프로젝트에서 파일 구성

  8. 8

    javafxports Android 프로젝트에서 구성 파일 찾기 문제

  9. 9

    기존 C 파일을 사용하여 Eclipse 프로젝트에서 생성

  10. 10

    Haxe : JSON 파일 용 코드 완성 매크로 만들기

  11. 11

    github의 CMake / C ++ 프로젝트 구성

  12. 12

    cmake로 구성된 Visual Studio 프로젝트의 C ++ 11 지침에서 컴파일러 실패

  13. 13

    재사용 가능한 프로젝트 및 솔루션 구조 만들기

  14. 14

    PcapPlusPlus를 사용하도록 Qt 프로젝트 (.pro 파일) 구성

  15. 15

    Android Studio : 라이브러리 프로젝트 용 구성 Gradle 파일

  16. 16

    XCode 컴파일러 오류, CMake를 사용하여 빌드 된 프로젝트

  17. 17

    Js 프로젝트 파일 구성

  18. 18

    lib 및 실행 파일을위한 C ++ CMake 프로젝트 구조

  19. 19

    .JSON 파일을 사용하여 블로그 게시물 구성 도우미 만들기

  20. 20

    Qt 용 텍스트 파일 만들기

  21. 21

    CMake 생성 Xcode 프로젝트가 컴파일되지 않습니다.

  22. 22

    cmake 프로젝트에서 emscripten을 사용하여 비트 코드 (.bc 파일)를 생성하는 방법은 무엇입니까?

  23. 23

    CMake에서 Visual Studio 프로젝트를 만들 때 Visual Studio가 실행 파일을 찾지 못함

  24. 24

    CMake에서 Visual Studio 프로젝트를 만들 때 Visual Studio가 실행 파일을 찾지 못함

  25. 25

    Windows Form으로 구성 파일 만들기

  26. 26

    유용한 로그 파일을 만들기 위해 텍스트 파일 구문 분석

  27. 27

    Clion, 프로젝트에서 C ++로 새 파일 만들기

  28. 28

    응용 프로그램에서 사용되는 데이터를 저장하기위한 구성 파일 만들기

  29. 29

    텍스트 파일을 사용하여 구조체 배열 만들기

뜨겁다태그

보관