Я пытался перенести проект из VS в CMake, но я не уверен, что моя структура проекта вполне подходит для простой миграции:CMake include_directories против файл GLOB
project/
|- CMakeLists.txt
|- build/
|- (cmake stuff)
|- src/
|- main.cpp
|- tests.cpp // also contains a main()
|- class1.hpp
|- class1.cpp
|- class2.hpp
|- class2.cpp
|- ...
|- included/
| - (external libs)
Мой CMakeLists.txt попытка до сих пор была:
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
set(CMAKE_LEGACY_CYGWIN_WIN32 0)
add_executable(webnectar src/main.cpp
src/test.cpp)
enable_testing()
add_test(tests project)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)
include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/included)
Но я получаю ошибки связи с моими собственными классами. Я не понимаю, почему.
В нескольких других вопросах SO я видел, как люди, использующие файловые GLOB-файлы, включали все источники из подпапки, что, я думаю, было бы решением. Тем не менее, мне жаль, что я не понял, почему include_directories
недостаточно и почему (если он будет работать) файл GLOB в порядке.
Кроме того, использование файла GLOB будет работать с моей сборкой, потому что у main.cpp и main.cpp есть основная функция.
Хотя это будет выглядеть по-другому (для другого вопроса), рассмотрите этот вопрос как более общий в смысле того, как я могу исправить все эти проблемы с помощью синтаксиса CMake или с более подходящей файловой структурой.
Хм, не следует этим классам. cpp' будет включен в источник? Что касается глобуса: есть плюсы и минусы, но минусы намного больше. –
user3159253
@ user3159253, я думал, что они будут, поскольку CMake находит заголовки. Но у меня возникают связи ошибок с этими классами. 'неопределенная ссылка на« class1 ctor »и т. д. – VillasV