CMakeLists создает служебную библиотеку - PullRequest
0 голосов
/ 29 декабря 2018

Я учусь использовать CMake для создания статических библиотек и делиться ими с другими модулями в проекте.Структура проекта следующая:

  root
    |
    |__ util
    |     |
    |     |__ CMakeLists.txt
    |
    |__ execution
    |     |
    |     |__ CMakeLists.txt
    |
    |__ logic
    |     |
    |     |__ CMakeLists.txt
    |
CMakeLists.txt

Итак, у меня есть модуль util, который содержит некоторые служебные структуры и функции, которые должны использоваться другими модулями (execution, * 1007).*).У меня есть 2 недоразумения:

I.Уместно ли просто добавить заголовки модулей util к пути включения в root/CMakeLists.txt и затем статически связать util?В настоящее время util/CMakeLists.txt выглядит следующим образом:

add_library(util src/util.c)

II.Если библиотека util не содержит исходного файла, а содержит только общие структуры данных и определения, используемые другими модулями, как мы можем добавить его?Я пытался написать util/CMakeLists.txt

add_library(util)

, а затем в root/CMakeLists.txt

include_directories("${PROJECT_SOURCE_DIR}/util/include")
add_subdirectory(util)

Но это не сработало.

You have called ADD_LIBRARY for library util without any source files. 
This typically indicates a problem with your CMakeLists.txt file
...