Cmake и стиль кодирования для общего кода конфигурации

следуя структуре моего проекта:

/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 ..) . Таким образом, общий код перекомпилируется для каждого исполняемого файла. Каков наилучший способ сделать это? Сделать статическую библиотеку из общих файлов?


person Eric    schedule 10.04.2012    source источник
comment
Я бы сделал статическую библиотеку, чтобы оба приложения связывали ее, но если вы будете публиковать приложения и делать их устанавливаемыми, то, может быть, было бы лучше сделать общую библиотеку динамической?   -  person Some programmer dude    schedule 10.04.2012


Ответы (1)


Каков наилучший способ сделать это? Сделать статическую библиотеку из общих файлов?

В яблочко. Или используйте общую библиотеку, если вы хотите сократить общий размер установки.

person John Zwinck    schedule 10.04.2012