Вот мой минимальный пример ниже: https://www.dropbox.com/s/7fwsr3sigb60rtw/leveling-test.zip?dl=0
Моя текущая структура папок проекта и соответствующее содержимое CMakeLists:
leveling
├── CMakeLists.txt: add_subdirectory(deps)
└── deps
├── CMakeLists.txt: add_subdirectory(xml-reading)
└── xml-reading
├── CMakeLists.txt: add_subdirectory(deps)
│ add_library(xml-reading ...)
│ target_include_directories(xml-reading PUBLIC ${CMAKE_CURRENT_LIST_DIR}/deps/tinyxml2)
│ target_link_libraries(xml-reading PUBLIC tinyxml2)
└── deps
├── CMakeLists.txt: add_subdirectory(tinyxml2)
└── tinyxml2
это создает файл xml-reading.dll.
Но тогда в параметрах компоновщика проекта выравнивания есть /DYNAMICBASE "bin\windows-32\debug\xml-reading.lib" "bin\windows-32\debug\BOBPrimitives.lib" "bin\windows-32\debug\tinyxml2d.lib"
Что дает:
2>LINK : fatal error LNK1104: cannot open file 'bin\windows-32\debug\xml-reading.lib'
Как дела?
add_library(xml-reading SHARED ...), не помоглоadd_library(xml-reading STATIC ...), чтобы заставить его создать файл .lib - но я хотел бы понять что происходитДля этого вопроса я добавил пустой файл cpp в xml-чтение, поэтому файл действительно создается, файл dll, когда STATIC не указан в add_library
добавлен минимальный пример: dropbox.com/s/7fwsr3sigb60rtw/leveling-test.zip?dl=0
также создал отчет об ошибке CMake gitlab.kitware.com/cmake/cmake/issues/18684
Разве общие проекты не должны создавать файлы .lib и .dll? (этот .lib предназначен для разработчиков, связывающихся с вашей .dll)





add_library по умолчанию использует ОБЩИЕ библиотеки (создание файла dll и lib), установка STATIC заставляет его создавать архивную библиотеку (создавать файл библиотеки). Если чтение xml - это только файлы заголовков, я бы мог представить себе, что на самом деле библиотека не создается, потому что нет исходного кода для компиляции. Действительно ли xml-чтение создавало и создавало файл?