Собрать несколько бинарников cmake

245
25 апреля 2017, 08:33

Имеется клиент-сервер проект, содержание cmakelist следующее:

cmake_minimum_required(VERSION 3.7)
project(chatProject)
set(CMAKE_CXX_STANDARD 11)
set(COMMON_SOURCES common/socketWrapper.h common/color.h)
set(SERVER_SOURCES server/main.cpp)
set(CLIENT_SOURCES client/main.cpp client/client.h client/message.h)
add_executable(client ${COMMON_SOURCES} ${CLIENT_SOURCES})
add_executable(server ${COMMON_SOURCES} ${SERVER_SOURCES})

Проблема : собирается по умолчанию только клиент. Подскажите пожалуйста, как собирать и клиент,и сервер вместе.

Answer 1

Разбей на 2 CMakeLists.txt.

В Первом сделай для клиента настройку:

cmake_minimum_required(VERSION 3.7)
project(client)
set(CMAKE_CXX_STANDARD 11)
set(COMMON_SOURCES common/socketWrapper.h common/color.h)
set(CLIENT_SOURCES client/main.cpp client/client.h client/message.h)
add_executable(client ${COMMON_SOURCES} ${CLIENT_SOURCES})

Во втором для сервера:

cmake_minimum_required(VERSION 3.7)
project(server)
set(CMAKE_CXX_STANDARD 11)
set(COMMON_SOURCES common/socketWrapper.h common/color.h)
set(SERVER_SOURCES server/main.cpp)
add_executable(server ${COMMON_SOURCES} ${SERVER_SOURCES})

Затем добавь ещё один корневой CMakeLists.txt и добавь туда:

cmake_minimum_required(VERSION 3.7)
project(chatProject)
add_subdirectory(path/to/client)
add_subdirectory(path/to/server)
add_custom_target(chatProject)
add_dependencies(chatProject client server)

и делай make конкретно chatProject или из папки где лежит рутовый CMakeLists.txt. Такая организация будет самая правильная.

Если будет добавляться какая-то дополнительная логика в разные части (сервер/клиент), то не будешь засорять один CMake.

READ ALSO
Получить глобальную переменную App. Webpack 2 - Marionette

Получить глобальную переменную App. Webpack 2 - Marionette

Хочу получить доступ к переменной appКак это сделать?

269
Обновление переменной во view

Обновление переменной во view

Господа, доброго времениНачал делать приложение на asp

208
“Парсинг” блока с поддомена

“Парсинг” блока с поддомена

ЗдравствуйтеЕсть два сайта: на основном домене и на поддомене

244
Ошибка Cannot read property при работе с GMail API

Ошибка Cannot read property при работе с GMail API

Не получается работать с GMail APIКаждый раз GMail не может быть прочитано и является пустым свойством

268