В настоящее время я меняю систему сборки в своем проекте с make-файлов gnu на cmake (которые генерируют make-файлы).
Мой проект генерирует несколько библиотек (.lib) и несколько исполняемых файлов (.exe).
В настоящее время я генерирую make-файлы, используя следующую команду:
cmake -G "Unix Makefiles" .. -DCMAKE_BUILD_TYPE=Debug
Сгенерированные make-файлы содержат цель all, а также цель для каждого исполняемого файла (скомпилированного как такового с помощью директивы add_executable cmake), поэтому я могу скомпилировать подмножество проекта (что экономит много времени): make executable_1; make executable_2 и так далее.
Однако для библиотек (скомпилированных как таковые с директивой add_library cmake) нет цели, поэтому я, например, не могу сделать make library_1. Я хочу сделать это, потому что это сэкономит много времени.
Я попытался добавить фиктивный исполняемый файл в cmake библиотеки и связать библиотеку с этим исполняемым файлом (который содержит только основной файл без фактического использования кода library_1).
add_library(library_1 test.cpp)
add_executable(dummy_exe dummy_main.cpp)
target_link_library(dummy_exe library_1)
Он добавляет цель для dummy_exe, но не создает библиотеку, потому что на самом деле не нужно связывать какой-либо код library_1.
В любом случае, это была попытка обходного пути, и в конце концов я бы предпочел просто вызвать make library_1. Есть ли способ добавить цель makefile для библиотеки с помощью cmake?
make help перечислит все известные цели, а для меня — список целей библиотеки.





Как ответили w-m и Fred, CMAKE действительно создает цель для библиотек в Makefile.
Я пытался создать библиотеку с именем подпроекта cmake библиотеки вместо имени библиотеки.
make help действительно очень помог найти этот выпуск, так как в нем перечислены все, что можно построить.
Использование
add_libraryдолжно создать цель в Makefile, может быть, вы пропустили это? Если вы уверены, что он не создан, создайте минимальный пример и подробно опишите свою среду (версия CMake, ОС).