繁体   English   中英

如何使用 CMake 组织我的文件?

[英]How to organise my files using CMake?

CMake 在解决方案中的代码组织方面存在一些问题。 我有一个习惯,通过为每个命名空间创建一个目录来组织我的命名空间。 例如,如果我创建这样的东西:

namespace test { namespace blabla  { ... } }

我会创建一个目录 test 并在其中创建一个目录 blabla,但是 CMake 不会使它们出现在我的 Visual Studio 或 Xcode 项目中。

有什么诀窍可以完成吗?

尝试使用source_group命令。 在调用add_executable添加source_group语句以根据需要构建项目,例如:

source_group("test\\blabla" FILES file1.cpp file2.cpp)

对于 VS 中的项目分组,您可以在 CMake 中使用这种方式(2.8.3 之后的版本)

//turn on using solution folders
set_property( GLOBAL PROPERTY USE_FOLDERS ON)

//add test projects under 1 folder 'Test-projects'
FOREACH(TEST ${TESTS_LIST})
    add_test(NAME ${TEST}  COMMAND $<TARGET_FILE:${TEST}>)
    set_tests_properties( ${TEST} PROPERTIES TIMEOUT 1) 
    set_property(TARGET ${TEST} PROPERTY FOLDER "Test-projects")
ENDFOREACH(TEST)

对于 Visual Studio:确保所有文件名都是唯一的。 编译dir/file.cpp的结果将是obj/file.obj 当编译器编译otherdir/file.cpp时,结果将是obj/file.obj - 之前的 object 文件将被覆盖 在 VS 2008 和更早的版本中就是这种情况,我怀疑在 VS 2010 中仍然是这种情况。

我也按照你的方式组织源代码。 我最终使用了以下命名方案:如果源文件的路径是Dir/Subdir/AnotherSubDir/File.cpp ,那么我将文件命名为Dir/Subdir/AnotherSubdir/DirSubdirAnotherSubdirFile.cpp 丑陋的? 是的。 但它胜过一个不会链接的项目,而且很容易弄清楚文件名应该是什么。 我想你可以只 append 文件上的序列号,但我认为它会更丑陋。 此外,如果您忘记使文件名唯一,则该错误并不那么明显。 尤其是当你累了,而你的未婚夫/妻子正在等待时......

自 Xcode 6 起,接受的解决方案不适用于 Xcode。但是,有一个简单的解决方法:

  1. 从 Xcode 项目中删除对源文件的引用(在侧栏中删除它们,然后选择“删除引用”)。
  2. 重新添加根文件夹,确保选中“创建组”,并确保 select 是所需的目标。

多田。 现在您的文件应该与 Finder 中的文件夹结构相匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM