我的项目根目录中有一个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只知道全局变量,但显然并非如此......
我已经在网上阅读了很多帖子和文章,但我找不到明确的答案.
我有一些具有类似用途的功能,我想要超出全局范围.其中一些需要公开,另一些应该是私有的(因为它们只是"公共"功能的辅助功能).另外,我不仅有函数,还有变量.它们只需要"私人"帮助函数,也应该是私有的.
现在有三种方式:
对我采取什么方式?结合其中一些方法的可能方法?
我想到了类似的东西:
谢谢.
我已经发现了另一个问题,即Windows/MingW没有为过时的usleep()提供nanosleep()和setitimer()替代方案.但我的目标是修复cppcheck给我的所有警告,包括usleep()样式警告.
那么,是否有一种解决方法可以在不使用cygwin或安装大量新依赖项/库的情况下以某种方式避免使用Windows上的usleep()?谢谢.
tl; dr版本: 是否可以使用CMake(> = 2.8)从某些文件生成zip文件并将打包的zip文件放在特定位置?
更长版本: 我有一个CMakeLists.txt,可以将我的项目构建为.exe文件.此exe文件将从zip文件中读取数据.现在,要在zip文件中打包的内容在我的git存储库中,以便它也可以编辑.但程序需要这个数据在一个zip文件中.因此,如果cmake脚本可以获取数据,将其放在zip文件中并将其放在exe旁边,那将是很好的.我已经听说过CPack,但我没有找到简单的例子,也不确定这是否适合我的任务.
这可能吗?如果是的话:怎么样?
多重继承的构造函数是多次调用的吗?并且构造函数的调用顺序是什么?这取决于继承列表中的顺序吗?
这是一个例子(它只是为了使情况清晰,没有现实生活中的例子).
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()首先?
谢谢.
是否有适用于Eclipse CDT的静态代码分析的好插件?到目前为止我找到了两个:
还有更好的吗?或者我如何让CppChecker做某事(或者它是一个静态代码分析器?网站根本不清楚)?
是否有任何免费工具(或直接的Eclipse CDT插件)扫描C++代码以查找未使用的函数,方法,变量,包括......?
我只为C#和Java找到了这个东西,但是我想把它用于C++.
Cppcheck和编译器可以在作用域中找到未使用的变量,但是它们没有找到类中未使用的成员函数或.cpp文件中未使用的包含.有这样的东西可以在项目中找到已弃用的旧代码.
为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++中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) 我有一个继承自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++ ×7
cmake ×2
eclipse ×2
static ×2
analysis ×1
c# ×1
constructor ×1
containers ×1
cpack ×1
cppcheck ×1
eclipse-cdt ×1
events ×1
find ×1
inheritance ×1
localization ×1
multilingual ×1
namespaces ×1
plugins ×1
scope ×1
singleton ×1
translation ×1
usleep ×1
vector ×1
windows ×1
zip ×1