jjzjj

c++ - 我应该将单元测试放在单独的库中吗?单独的子目录?

我有一个大型代码库,其中有一些(太少了)单元测试;我正在向库中添加代码,尝试对新代码进行单元测试(我也想在将来当我更有经验时为旧代码添加单元测试)。我们目前使用自定义(不是很精细)的单元测试框架;我想切换到boost.test。我的图书馆布局是:mylib1(300个文件,70000行代码)来源富foo.cppfoo_part.cppfoo_part.h单元测试-我应该将它移到mylib之外吗?foo_test1.cppfoo_test2.cppfoo_test3.cpp酒吧酒吧.cppbar_part.cppbar_part.h单元测试-它属于这里吗?bar_test1.cppbar

c++ - 通过别名定义前向定义的 C++ 结构

我想围绕现有的C++代码库编写一个C包装器。所以我需要实现一些C-API函数,这些函数仅将它们的操作转发给相应的C++方法。我的问题是,我不知道如何通过现有类实现前向定义的结构://Foo.hppnamespacemyLib{structFoo{//somemeaningfulC++body};}//foo.h//#ifdef__cplusplusetc.leftoutextern"C"{structmyLib_foo;myLib_foo*mkfoo();//etc.}//foo.cppextern"C"{#include"Foo.hpp"#include"foo.h"typedefm

c++ - 有没有办法强制 C++ 编译器不优化静态库中的特定静态对象?

(如果找不到通用的解决方案,只需要为gcc5.4工作)我有一个通用工厂,用于根据某些键(例如表示类名的字符串)构造对象。工厂必须允许注册在构造时可能不知道的类(因此我不能简单地显式注册类列表)。作为注册这些键及其相关构造函数的方法,我有另一个“RegisterInFactory”(模板化)类。在每个类的源文件中,我在对应于该类的匿名namespace中构造一个对象。这样,一旦构建了全局对象,每个类就会自动注册到工厂。除了执行此初始注册任务之外,这些对象永远不会被使用或引用。然而,当代码被编译成一个静态库,当那个库被链接到一个可执行文件时,这些静态对象永远不会被构造,所以这些类不会注册到

c++ - cmake install(FILES ...) 似乎不起作用

我有一个用C++编写的项目,我正在使用cmake来构建它。该项目有许多子项目,其中一个是其他子项目所需的库。我可以编译.so并将其移动到构建目录添加_库,和安装(目标...)但是我还需要将lib的头文件安装在构建目录的include目录下。我使用install(FILES...)来完成它,但它似乎根本没有做任何事情。为了演示它,我通过qtcreator创建了一个测试项目,&lstestCMakeLists.txtempty.hhmain.cpp$cattest/CMakeLists.txtproject(test)cmake_minimum_required(VERSION2.8)in

c++ - 如何让 Very Sleepy 探查器识别 C++ 二进制文件中的函数名称?

我有一个使用VisualStudio2010构建的混合C#/托管C++/非托管C++的工具。代码实际上分布在一个.exe(我将其称为mybinary.exe)和一个.dll(mylib.dll。)我已经在项目上为dll和exe设置了build设置,以便在发布构建中生成PDB文件。我已经确保PDB文件都在exe和pdb所在的同一目录中。但是当我调试这个程序时我仍然看不到函数的名称;我只看到地址。这是我在VerySleepy的第一个屏幕中选择程序时在底部的小状态栏中得到的相关摘录:DBGHELP:mybinary.vshost-publicsymbolsC:\Users\(me)\AppD

c++ - 我能保证不会被这种 ODR 违规行为所困扰吗?

我有一个头文件,它声明了一个带有静态变量的模板并定义了它:/*my_header.hpp*/#ifndefMY_HEADER_HPP_#defineMY_HEADER_HPP_#includetemplatestructfoo{staticintbar;staticvoiddump(){printf("%d\n",bar);}};templateintfoo::bar;#endif//MY_HEADER_HPP_此header包含在main.cpp和共享库mylib中。特别是,mylib_baz.hpp只包含此模板并声明一个修改模板特化的函数。/*mylib_baz.hpp*/#ifn

ios - 将 CocoaPods 与 2 个项目一起使用时的运行时输出 objc[69590]

我创建了2个xcode项目“mylib”和“myapp”mylib的项目类型是“iOS->CocoaTouchFramework”myapp的项目类型是“iOS->Application->SingleViewApplication”。这两个项目都依赖于“AFNetworking”,所以我在下面编写了Podfile。workspace'myapp'platform:ios,'7.0'xcodeproj'myapp/myapp.xcodeproj'target:myappdoxcodeproj'myapp/myapp.xcodeproj'pod'AFNetworking','~>2.5.

android - System.loadLibrary() 错误

我成功地使用androidndk-Standalone工具链交叉编译了一个c++库然后,我在Eclipse中创建了一个新的android应用程序项目,当我将mylib.so放入jni文件夹并执行ndk-build命令时,它工作正常Prebuilt:mylib.solibs/armeabi/mylib.so但是在添加的时候static{System.load("/data/data/my_package/lib/mylib.so");}我在logcat中收到错误消息AndroidRuntimeCausedby:java.lang.UnsatisfiedLinkError:Cannotlo

c++ - 如何使用 Sphinx 管理多个版本的文档?

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.3年前关闭。Improvethisquestion我维护一个用C++编写的小型库项目。我想使用Sphinx来维护每个发布版本的库网站+用户文档。我找到了[类似的问题Howtomanagemanyversions?在sphinx-dev邮件列表whichIhavebumped但没有广泛的后续行动。如何管理多个版本?我认为基本结构是这样的:mylib/我正在尝试找出这种结构的最佳实用配置。我有root配置mylib/conf.py我控制网

ios - CocoaPod库项目创建

我正在关注thistutorialhere创建我的第一个CocoaPod库(例如命名为MyLib),但在我执行命令后,我没有看到我的库是使用他们在教程中描述的文件结构创建的。例如,我在根文件夹MyLib中没有看到MyLib.xcodeproj,而是看到了_Pods.xcodeproj;没有Pods目录,尽管教程是这么说的。我执行此命令是为了检查podliblintMyLib.xcodespec--allow-warnings和podliblint--allow-warnings。这两个命令的结果都是MyLibpassedvalidation.在MyLib.xcodespec文件中,我有