Есть CMake скрипт для С++ проекта, c таким содержимым:
#...
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug_static")
add_library(${PROJECT_NAME} STATIC ${SRC_FILES} ${HEADERS_FILES})
endif()
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
add_library(${PROJECT_NAME} SHARED ${SRC_FILES} ${HEADERS_FILES})
endif()
if(${CMAKE_BUILD_TYPE} STREQUAL "Release_static")
add_library(${PROJECT_NAME} STATIC ${SRC_FILES} ${HEADERS_FILES})
endif()
if(${CMAKE_BUILD_TYPE} STREQUAL "Release")
add_library(${PROJECT_NAME} SHARED ${SRC_FILES} ${HEADERS_FILES})
endif()
#...
В зависимости от типа сборки, тип библиотеки разный. При компиляции все работает как и задумано, но при попытке сгенерировать .sln для Visual Studo все идет не так.
cmake -G "Visual Studio 15 2017 Win64"
CMake запускается без CMAKE_BUILD_TYPE
=> Все проверки if
оказываются FALSE
=> нет тагета нет солюшена.
Если задать CMAKE_BUILD_TYPE
cmake -DCMAKE_BUILD_TYPE=Debug_static -G "Visual Studio 15 2017 Win64"
то все 4 конфигурации получаться такие же как Debug_static
.
Вроде как, на этот случай были придуманы generator-expressions, но вот именно тип библиотеки ими задать нельзя.
Вопрос. Как заставить CMake сгенерировать солюшен эквивалентный приведенному скрипту? Чтобы было 4 конфигурации: 2 static и 2 shared.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
int t = 10; cout << t << endl << t * 2 << endl << --t;
Есть задача, ее я решил и пока программа работает с маленькими числами ответы выводит правильноНо когда мы берем более большие числа ответы...
Сделал свой второй небольшой, но интересный проект, дневник в консолиВсе записи сохраняются в файлах с именами по дате создания