我在使用带有多个可执行文件的CMake组织项目时遇到了麻烦。我有以下结构:
CmakeLists.txt
main.cpp
somelib.cpp
somelib.h
dir1
main.cpp
file1.h
file1.cpp
...
dir2
main.cpp
lib1.h
lib2.cpp
...
通常,我希望能够在Clion中选择可执行文件并独立运行任何项目,包括依赖于其他两个项目的外部项目。在外部main.cpp
中,我包括dir1和dir2的标头。 dir1,dir2项目本身依赖于不同的库,例如Boost
,Eigen
,Qt
等。使此结构正常工作的最佳方法是什么?我是Cmake的新手,并且使用add_subdirectory
进行多次尝试并没有使我更接近解决方案。仅当我具有外部CmakeLists.txt并在使用dir1,dir2时将所有库包括在其中时,才使它起作用,就像其中没有任何CmakeLists.txt的文件夹一样。我将不胜感激。
答案 0 :(得分:1)
从简单的CMake角度来看-所以我不知道它如何与CLion交互,但是您在注释中指出,写CMakeLists.txt
是重要的位子-一种实现方法是:
add_subdirectory(dir1/)
和add_subdirectory(dir2/)
add_executable(mytoplevelprogram main.cpp somelib.cpp)
。如果 mytoplevelprogram 的构建需要库中的标头,请使用合适的target_include_directories(mytoplevelprogram ...)
和/或链接到在子目录中创建的工件CMakeLists.txt
来查找依赖项并为该子目录构建可执行文件,并带有合适的{{1 }}命令。通常没有理由在源代码树中放置多个add_executable()
命令。