小编blu*_*rnd的帖子

cmake变量范围,add_subdirectory

我的项目根目录中有一个CMakeLists.txt,而我的/ src文件夹中有一个./ src文件夹中的那个只包含一个带有.cpp文件(set (SOURCEFILES main.cpp foo.cpp))的变量,并且在我做的根CMakeLists.txt中add_subdirectory(src),后来我做了add_executable(MyApp ${SOURCEFILES}).

但是cmake给了我错误

调用add_executable时参数数量不正确,未提供任何来源

如何让cmake查看变量?我读到cmake只知道全局变量,但显然并非如此......

scope cmake

65
推荐指数
1
解决办法
5万
查看次数

C++,静态与命名空间与单例

我已经在网上阅读了很多帖子和文章,但我找不到明确的答案.

我有一些具有类似用途的功能,我想要超出全局范围.其中一些需要公开,另一些应该是私有的(因为它们只是"公共"功能的辅助功能).另外,我不仅有函数,还有变量.它们只需要"私人"帮助函数,也应该是私有的.

现在有三种方式:

  • 创建一个静态的类(反对:潜在的"不能在没有对象的情况下调用成员函数" - 并不是所有东西都需要是静态的)
  • 制作单身类(反对:我需要对象)
  • 创建命名空间(没有私有关键字 - 为什么我要把它放在命名空间中呢?)

对我采取什么方式?结合其中一些方法的可能方法?

我想到了类似的东西:

  1. 制作单例,静态函数使用单例对象的辅助函数(这可能吗?我仍然在类中,但访问它的类型的对象)
  2. 在programm start调用的构造函数,初始化所有东西( - >确保静态可以从单例对象访问函数)
  3. 仅通过MyClass :: PublicStaticFunction()访​​问公共函数

谢谢.

c++ singleton static namespaces

30
推荐指数
2
解决办法
1万
查看次数

c ++,usleep()是过时的,Windows/MingW的变通方法?

我已经发现了另一个问题,即Windows/MingW没有为过时的usleep()提供nanosleep()和setitimer()替代方案.但我的目标是修复cppcheck给我的所有警告,包括usleep()样式警告.

那么,是否有一种解决方法可以在使用cygwin或安装大量新依赖项/库的情况下以某种方式避免使用Windows上的usleep()?谢谢.

c++ windows cppcheck usleep

24
推荐指数
6
解决办法
6万
查看次数

使用CMake的zip文件?

tl; dr版本: 是否可以使用CMake(> = 2.8)从某些文件生成zip文件并将打包的zip文件放在特定位置?

更长版本: 我有一个CMakeLists.txt,可以将我的项目构建为.exe文件.此exe文件将从zip文件中读取数据.现在,要在zip文件中打包的内容在我的git存储库中,以便它也可以编辑.但程序需要这个数据在一个zip文件中.因此,如果cmake脚本可以获取数据,将其放在zip文件中并将其放在exe旁边,那将是很好的.我已经听说过CPack,但我没有找到简单的例子,也不确定这是否适合我的任务.

这可能吗?如果是的话:怎么样?

zip cmake cpack

21
推荐指数
4
解决办法
1万
查看次数

C++,是多次调用多次继承的构造函数吗?

多重继承的构造函数是多次调用的吗?并且构造函数的调用顺序是什么?这取决于继承列表中的顺序吗?

这是一个例子(它只是为了使情况清晰,没有现实生活中的例子).

class Base {};
class DerivedBaseOne : public Base {};
class DerivedBaseTwo : public Base {};
class Derived : public DerivedBaseTwo, public DerivedBaseOne 
{};

//somewhere in the code, is Base() called two times here?
Derived * foo = new Derived();
Run Code Online (Sandbox Code Playgroud)

Base()构造函数是否被调用两次?并且构造函数的调用顺序是什么?基地第一?或DerivedBaseOne()或DerivedBaseTwo()首先?

谢谢.

c++ inheritance constructor multiple-inheritance

19
推荐指数
2
解决办法
1万
查看次数

C++,Eclipse CDT代码分析?

是否有适用于Eclipse CDT的静态代码分析的好插件?到目前为止我找到了两个:

  • Cppcheck插件,但这仍然需要原始的cppcheck可执行文件
  • CppChecker,但这没用(它什么也没做)

还有更好的吗?或者我如何让CppChecker做某事(或者它是一个静态代码分析器?网站根本不清楚)?

c++ eclipse static analysis eclipse-cdt

18
推荐指数
1
解决办法
2万
查看次数

C++,找到未使用的代码和包含

是否有任何免费工具(或直接的Eclipse CDT插件)扫描C++代码以查找未使用的函数,方法,变量,包括......?

我只为C#和Java找到了这个东西,但是我想把它用于C++.

Cppcheck和编译器可以在作用域中找到未使用的变量,但是它们没有找到类中未使用的成员函数或.cpp文件中未使用的包含.有这样的东西可以在项目中找到已弃用的旧代码.

c++ eclipse plugins find

16
推荐指数
1
解决办法
7645
查看次数

C++,多语言/本地化支持

为C++程序添加多语言支持的最佳方法是什么?

如果可能,应该从包含键值对的纯文本文件中读入该语言(§WelcomeMessage§"Hello%s!").

我想到了添加一个localizedString(key)函数,它返回加载的语言文件的字符串.有更好或更有效的方法吗?

//half-pseudo code
//somewhere load the language key value pairs into langfile[]
string localizedString(key)
{
    //do something else here with the string like parsing placeholders
    return langfile[key];
}

cout << localizedString(§WelcomeMessage§);
Run Code Online (Sandbox Code Playgroud)

c++ multilingual translation localization

7
推荐指数
3
解决办法
1万
查看次数

什么更快:重新创建或清除()?

我对C++中std :: vector <>的性能有疑问.通过调用其clear()方法重用相同的向量是否更快,还是更快地重新创建向量?

以下示例不是真实的代码,只是为了弄清楚问题是什么:

//Example ONE: is this faster
std::vector<int> foo;
for(int i = 0; i < 100; ++i)
{
    foo.clear();
    for(int j = 0; j < 100; ++j)
    {
        foo.push_back(i+j);
    }
}

//Example TWO: or is that faster?
for(int i = 0; i < 100; ++i)
{
    std::vector<int> foo;
    for(int j = 0; j < 100; ++j)
    {
        foo.push_back(i+j);
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ vector

7
推荐指数
1
解决办法
550
查看次数

C#,容器的火灾事件

我有一个继承自Button的MyButton类.在这个课程中,我已经放置了其他几个控件(Labels,Progessbar).这样做的问题是Button上的控件使得无法触发Button.Click或Button.MouseHover事件.如何才能实现按钮上的控件仅显示但是"事件透明":标签和progessbar上的单击/悬停与我直接单击/悬停在按钮上(包括发件人和所有内容)相同.像"继承父母的事件"之类的东西.

class MyButton : Button
{
    Label foo = new Label();
    ProgressBar bar = new ProgessBar();
}
Run Code Online (Sandbox Code Playgroud)

c# events containers

6
推荐指数
1
解决办法
1009
查看次数