如何在CMakeLists.txt中指定源目录位置?

时间:2019-07-05 22:06:11

标签: c++ cmake

在我的c ++ cmake项目中,我希望CMakeLists.txt和源文件位于不同的位置。您如何指定此选项?我想知道这一点,因为我认为将构建文件与源文件分开是很有意义的。

就我而言,这是针对跨平台项目的。我知道通常使用单个顶级CMakeLists.txt +条件构造来处理不同的目标/平台,但是我计划的是为每个平台使用不同的CMakeLists.txt文件,并从源头上删除它们。像这样:

-my_project
   -sources
      -module1
         -common.hpp
         -common.cpp
         -windows
            -win_functions.cpp
            -win_functions.hpp
         -linux
            -linux_functions.cpp
            -linux_functions.hpp
      -module2 (...)
      -module3 (...)
   -build_projects
      -windows
         -CMakeLists.txt
      -linux
         -CMakeLists.txt

在我看来,这将是指定新cmake的工作目录/源目录的问题,但是到目前为止,我得到的壁橱是在添加源文件时在正确的位置添加前缀,如下所示:

target_sources(my_target_windows PRIVATE ${win_source_dir}/win_functions.cpp)

但是问题是Visual Studio不允许我以这种方式添加它们时预览源文件,而且看来我也无法在Visual Studio的CMakeSettings.json中解决此问题。因此,我正在为此寻求更多的内置功能。<​​/ p>

1 个答案:

答案 0 :(得分:0)

好吧,在Visual Studio中找到了解决我的问题的方法:

在解决方案资源管理器中,将“解决方案和文件夹”设置为“ CMake Targets View”,它现在将正确显示添加到cmake项目中的源代码和标题。

因此,在cmake +中使用到源的相对路径可以解决我的问题。