У меня странная проблема, когда CMake в Windows запускается без проблем, но тогда компилятор фактически не создает библиотеку
project(core)
find_package(spdlog REQUIRED)
set(core_gen_hdr "include/chrono.h" "include/monitoring.h" "${SPDLOG_HEADER_FILES}")
add_library(${PROJECT_NAME} STATIC "${core_gen_hdr}")
target_include_directories (${PROJECT_NAME} PUBLIC "include/" "${SPDLOG_INCLUDE_DIRS}")
source_group("Header Files" FILES "${core_gen_hdr}")
set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER ${MODULE_NAME})
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
Интересно, связано ли это с тем, что единственными исходными файлами являются файлы заголовков? При компиляции библиотека не создается, что создает проблемы с зависимыми библиотеками, которые хотят связать с несуществующим файлом.
Версия CMake - 3.5.0, и я использую Visual Studio 2015.





Вам нужно создать interface library
Фактически, spdlog также предназначен только для заголовков и делает именно это (см. здесь)
Для вашего проекта вам просто нужно добавить каталоги включения вашего проекта, а затем ссылку на spdlog, и cmake отсортирует транзитивные зависимости.
# create your library, specifying it is an interface-library
add_library(${PROJECT_NAME} INTERFACE)
# add your project's directories
target_include_directories(
${PROJECT_NAME}
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/include)
# link against spdlog, which is also just an interface-library
target_link_libraries(${PROJECT_NAME} spdlog)