在我的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>
答案 0 :(得分:0)
好吧,在Visual Studio中找到了解决我的问题的方法:
在解决方案资源管理器中,将“解决方案和文件夹”设置为“ CMake Targets View”,它现在将正确显示添加到cmake项目中的源代码和标题。
因此,在cmake +中使用到源的相对路径可以解决我的问题。