by Anonymous » 17 Aug 2025, 16:34
Ich habe eine einfache C ++-Bibliothek, die als Header-Bibliothek versandt werden sollte. Die Bibliothek hängt von anderen Bibliotheken ab, die über CPM installiert wurden. Das funktioniert so lange, wie das Projekt als gemeinsam genutzte/statische Bibliothek oder binär konfiguriert ist. /> Die folgende Konfiguration funktioniert beim Definieren von Binärzielen (Austausch der Schnittstelle mit public )!
Code: Select all
cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
project(CpmCompileCommandsBug
LANGUAGES CXX
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include(cmake/CPM.cmake)
CPMAddPackage(
NAME yaml-cpp
VERSION 0.6.3
GITHUB_REPOSITORY jbeder/yaml-cpp
GIT_TAG yaml-cpp-0.6.3
OPTIONS
"YAML_CPP_INSTALL ON"
)
add_library(${PROJECT_NAME} INTERFACE)
target_link_libraries(${PROJECT_NAME} INTERFACE yaml-cpp)
# the below target config does work
# add_library(${PROJECT_NAME} STATIC main.cpp)
# target_link_libraries(${PROJECT_NAME} PUBLIC yaml-cpp)
Main.cpp:
Ich habe eine einfache C ++-Bibliothek, die als Header-Bibliothek versandt werden sollte. Die Bibliothek hängt von anderen Bibliotheken ab, die über CPM installiert wurden. Das funktioniert so lange, wie das Projekt als gemeinsam genutzte/statische Bibliothek oder binär konfiguriert ist. /> Die folgende Konfiguration funktioniert beim Definieren von Binärzielen (Austausch der Schnittstelle mit public )![code]cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
project(CpmCompileCommandsBug
LANGUAGES CXX
)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include(cmake/CPM.cmake)
CPMAddPackage(
NAME yaml-cpp
VERSION 0.6.3
GITHUB_REPOSITORY jbeder/yaml-cpp
GIT_TAG yaml-cpp-0.6.3
OPTIONS
"YAML_CPP_INSTALL ON"
)
add_library(${PROJECT_NAME} INTERFACE)
target_link_libraries(${PROJECT_NAME} INTERFACE yaml-cpp)
# the below target config does work
# add_library(${PROJECT_NAME} STATIC main.cpp)
# target_link_libraries(${PROJECT_NAME} PUBLIC yaml-cpp)
[/code]
[b] Main.cpp[/b]:
[code]#include
[/code]