[英]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。但是,有一个简单的解决方法:
多田。 现在您的文件应该与 Finder 中的文件夹结构相匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.