KDevelop4: настройка проекта с использованием cmake

#c #linux #cmake #project-setup #kdevelop4

#c #linux #cmake #проект-настройка #kdevelop4

Вопрос:

Я использую Kdevelop4 и хотел бы использовать проект CMake c по умолчанию.

Мой план состоит в том, чтобы разделить мое приложение на программы, несколько разделяемых библиотек, и я хотел бы иметь отдельный проект для создания модульных тестов (я планирую использовать Google test).

У меня есть несколько вопросов :

  1. Как изменить файл cmake по умолчанию, чтобы получить общую библиотеку, а не исполняемый файл?
  2. Как интегрировать Google testing framework с cmake?

Значение по умолчанию CMakeLists.txt созданный KDevelop4 выглядит примерно так :

 project(kdevbook)

add_executable(kdevbook main.cpp)
  

Ответ №1:

1) Для общей библиотеки:

 add_library(kdevbooklib SHARED source.cpp)
  

Подробная информация.

2) Ссылка.

Обновить:

Root CMakeList.txt:

 CMAKE_MINIMUM_REQUIRED(VERSION 2.6.0)

PROJECT(MyGreatProject)

SET(LIBRARY_OUTPUT_PATH ${MyGreatProject_BINARY_DIR}/bin CACHE PATH
  "Single output directory for building all libraries.")
SET(EXECUTABLE_OUTPUT_PATH ${MyGreatProject_BINARY_DIR}/bin CACHE PATH
  "Single output directory for building all executables.")
MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)

ADD_SUBDIRECTORY(MyGreatProjectLib)
ADD_SUBDIRECTORY(MyGreatProjectBin)
  

Библиотеки MyGreatProjectLib/CMakeLists.txt:

 PROJECT(MyGreatProjectLib)

INCLUDE_DIRECTORIES(
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR})

add_library(MyGreatProjectLib SHARED source.cpp)
  

Bin MyGreatProjectBin/CMakeLists.txt

 PROJECT(MyGreatProjectBin)

INCLUDE_DIRECTORIES(
  ${CMAKE_CURRENT_BINARY_DIR}
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${MyGreatProjectLib_SOURCE_DIR})

add_executable(MyGreatProjectBin main.cpp)

target_link_libraries(MyGreatProjectBin MyGreatProjectLib)
  

Комментарии:

1. Еще один вопрос. Если у меня есть 3 проекта: 1-й для библиотеки, 2-й для модульного тестирования, 3-й для исполняемого файла, как мне создать зависимости? Я хочу, чтобы 2-й и 3-й зависели от 1-го. кстати, спасибо за ответ

2. Возможно ли вообще добавить такие зависимости в cmake?

3. Да: смотрите измененный ответ.