следуя структуре моего проекта:
/myproject
CMakeLists.txt (containing "add_subdirectory" and "include_directories" ..)
/src
/lib1
CMakeLists.txt (containing "add_library(lib1 .. )" )
..
/lib2
idem as lib1 ..
/mains
/common
=>config.cpp<=
=>gui.cpp<=
/main1
CMakeLists.txt
main1.cpp
/main2
CMakeLists.txt
main2.cpp
/data
/images_and_different_stuff
/conf
params.cfg
/bin
(output executables)
/release
(cmake build_files)
Мой вопрос касается связывания классов конфигурации, которые я разместил в /common
. Эти классы читают CLI или файл конфигурации params.cfg
и инициализируют объекты сети, которые присутствуют как в main1.cpp, так и в main2.cpp и main3.cpp... (один файл конфигурации для всех exes). На данный момент у меня есть в моем /main1's CMakeLists.txt
: set(main1_source main1.cpp ../common/config.cpp ..)
. Таким образом, общий код перекомпилируется для каждого исполняемого файла. Каков наилучший способ сделать это? Сделать статическую библиотеку из общих файлов?