Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为C++代码组织一个VPN库_C++_Svn_Tortoisesvn - Fatal编程技术网

如何为C++代码组织一个VPN库

如何为C++代码组织一个VPN库,c++,svn,tortoisesvn,C++,Svn,Tortoisesvn,我是SVN的新手,我想使用TortoiseSVN向SVN提交一个代码。我有C++的头和代码的来源,但我不知道如何在有效的方式组织文件夹之前上传版本到SN。对人们通常的行为有什么建议吗?不同语言的代码结构是否有区别,例如C++或java。我应该遵守什么具体规则吗 使现代化 所以在检查了答案之后,我把事情弄清楚了。一个项目的常用文件夹结构如下: /trunk /branches /tags 但我也发现了一个我非常喜欢的类似结构,那就是: /trunk #Keep

我是SVN的新手,我想使用TortoiseSVN向SVN提交一个代码。我有C++的头和代码的来源,但我不知道如何在有效的方式组织文件夹之前上传版本到SN。对人们通常的行为有什么建议吗?不同语言的代码结构是否有区别,例如C++或java。我应该遵守什么具体规则吗

使现代化 所以在检查了答案之后,我把事情弄清楚了。一个项目的常用文件夹结构如下:

/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。为了避免混淆,我将把它添加到列表中有用的我会尝试不同的方法,然后决定我最喜欢什么。