如何为C++代码组织一个VPN库
我是SVN的新手,我想使用TortoiseSVN向SVN提交一个代码。我有C++的头和代码的来源,但我不知道如何在有效的方式组织文件夹之前上传版本到SN。对人们通常的行为有什么建议吗?不同语言的代码结构是否有区别,例如C++或java。我应该遵守什么具体规则吗 使现代化 所以在检查了答案之后,我把事情弄清楚了。一个项目的常用文件夹结构如下:如何为C++代码组织一个VPN库,c++,svn,tortoisesvn,C++,Svn,Tortoisesvn,我是SVN的新手,我想使用TortoiseSVN向SVN提交一个代码。我有C++的头和代码的来源,但我不知道如何在有效的方式组织文件夹之前上传版本到SN。对人们通常的行为有什么建议吗?不同语言的代码结构是否有区别,例如C++或java。我应该遵守什么具体规则吗 使现代化 所以在检查了答案之后,我把事情弄清楚了。一个项目的常用文件夹结构如下: /trunk /branches /tags 但我也发现了一个我非常喜欢的类似结构,那就是: /trunk #Keep
/trunk
/branches
/tags
但我也发现了一个我非常喜欢的类似结构,那就是:
/trunk #Keep it to developement mode always.
/samples #samples of use
/modules #software modules
/project_modName
/include # .hpp files
/src # .cpp files
/test #unitary tests
/branches #experimental developements (copies of trunk at various stages)
/tags #estable versions
/extras
/3rdparty #libs
/data #necessary data for developement
/doc #documentation
/resources #for window applications
至少我喜欢它的多媒体应用程序代码
更新2
此更新只是为了解释我是如何创建存储库的。我创建了一个名为structure_svn的文件夹。在内部,我创建了上面所示的结构。我右键单击父文件夹并选择导入。在URL中,我写入文件夹路径file:///c:/svn_repos 因此,自动在svn_repos下创建结构,而不使用文件夹结构_svn
我想指出这一点,因为您右键单击要导入的文件夹将永远不会出现。当我尝试它时,我才意识到这一点,并在toturials上进行了解释
下一步是成功地将我的代码划分到创建的结构中。向前迈出的一大步是确保所有项目都在源代码构建之外进行,即将临时文件放入$TEMP,并将所有输出文件放入专用的bin/lib目录中。如果操作正确,则会留下只包含源的源目录。名字里有什么。。除了“纯”源文件之外,还要确保构建源文件所需的一切都在存储库中:项目文件/生成器、资源
一旦您正确地将其放置到位,您很有可能只需将一些典型的项目生成文件(如*.suo for Visual Studio)放入SVN的忽略列表中,就可以提交了。以下是我在编程项目中主要从C/C++角度构建树的方法: / src-我自己编写的源文件和头文件 外部依赖;包含第三方库 libname-1.2.8 包含-标题 lib-编译的lib文件 Donwload.txt-包含下载所用版本的链接 ide-我将项目文件存储在这里 vc10-我按IDE排列项目文件 bin编译的二进制文件在这里 obj-编译器的构建文件 gcc-如果您的项目大小合理,请为每个编译器的文件创建一个单独的文件夹 文档-任何类型的文档 自述 安装 临摹 makefile—自动生成IDE项目文件的工具。我更喜欢CMake。 请注意: 如果我正在编写一个库,并且使用C/C++,我将首先将源文件组织在两个名为src/include和src/source的文件夹中,然后按模块组织。如果它是一个应用程序,那么我将按照模块头来组织它们,并且源代码将放在同一个文件夹中 上面用斜体列出的文件和目录我不会添加到代码存储库中
编辑:请注意,我使用的是Mercurial,而不是SVN,因此上面的结构是为版本控制系统定制的。无论如何,我从你的更新中看到,你已经找到了一个你喜欢的。基本上,你可以根据自己的需要输入svn。您可以考虑的唯一标准是标准存储库布局:参阅: 在这个项目中,你是对的,有几个最佳实践。而且每种语言都不同。例如,Java包是按名称空间组织的。在C++世界中,我已经看到了两种主要的组织方式: 将每个类放入同一目录中的header.h和源文件.cpp中 Header和source是分开的,因此您有一个文件夹,特别是用于Header的文件夹。这对库非常有用,这样上层项目就可以使用此路径。
然后,您需要一个用于第三方LIB的文件夹,另一个用于目标文件和其他文件(如构建文件或文档)的文件夹。如果您是svn的noob 根据我的经验,需要注意的最常见的事情是包括自动生成的文件和IDE用户文件。这些事情在处理共享项目之前你不会注意到。例如,你是指错误日志吗?实际上,我主要考虑的是文件夹的结构和其他方面,如何命名和组织它们。我指的是从.resx文件生成的*.designer.cs文件。我也知道你想要一个项目布局/命名,但我自己在5年后仍在努力,所以我能建议的最好办法是四处看看,大多数开源项目让你看看它们的源代码管理,找到你喜欢的东西,然后从那里开始。@Jav_Rock你发现的结构似乎也很好。我可能会修改一些东西。没有ide的src似乎不是特别有用。如何在没有任何项目文件的情况下构建大型项目,无论是Makefile/CMakeFile/cvproj..@sti
当然,你应该有一些制作文件,我个人更喜欢CMake。为了避免混淆,我将把它添加到列表中有用的我会尝试不同的方法,然后决定我最喜欢什么。