至少在我的用法中,我有时删除我的CMake构建文件夹并创建一个新文件夹,或者有多个构建文件夹(每台计算机一个)但只有一个源文件夹(nfs mount).
据我所知,QT Creator将设置保存到源树中的CMakeLists.txt.user ,将其他一些设置保存到build文件夹中的'project.cbp'文件中.如果我从GUI设置设置,它们会在擦除/创建构建文件夹后丢失.很公平,但我想在创建新版本时使用脚本再次设置它们.
那么,我该怎么做:
a)让QT Creator在源树之外的某处写入CMakeLists.txt.user文件夹,以便保留机器特定的设置(例如在开发计算机上调试,在测试计算机上发布)?
b)从QT Creator项目读取/编写构建和运行设置,例如每个可执行文件的调试参数和额外的构建命令(例如-j8)?
然后我会在CMakeLists.txt中执行类似"execute_process(...)"的操作,为QT Creator项目设置一些调试和构建参数.
有没有办法在标题中的那个点上使用static_assert类型T 不完整?如果有人在他们不应该的地方添加#includes,那么这个想法就会产生编译错误.
使用该链接的答案,
namespace
{
template<class T, int discriminator>
struct is_complete {
static T & getT();
static char (& pass(T))[2];
static char pass(...);
static const bool value = sizeof(pass(getT()))==2;
};
}
#define IS_COMPLETE(X) is_complete<X,__COUNTER__>::value
class GType;
static_assert(!IS_COMPLETE(GType),"no cheating!");
Run Code Online (Sandbox Code Playgroud)
不幸的是,这给出了"无效使用incomlete类型"错误,哦.有没有办法断言否定?
有没有人有相当比较VTK和OpenSceneGraph的经验?我对VTK比较熟悉,但我很好奇是否有人广泛尝试过.
我有两个内置的,5.6 vtk和2.9.9 osg,可以运行示例......乍一看OSG似乎更"粗糙",但也许没关系.特别是我担心能够在VTK中摆弄低级openGL; 例如,我认为glReadPixels在OSG上会表现得更好.评论?
(或者是否有一个很好的'其他',我错过了?我知道其他人存在,但请看一下OSG和VTK的大范围......)
我正在寻找类似的东西:
std::vector<double> X = some_math_function( );
somenamespace :: plot( Wrapper( X ) ); // pop-up and display a graph of X on y-axis, 1 to X.size() on x-axis.
Run Code Online (Sandbox Code Playgroud)
显然有更重量级的方法,如设置gnu-plot或其他什么,我已经在VTK图表中使用了这些东西.我只想要一个愚蠢的贫民窟,情节出现.这是用于粗略调试检查的事情,例如"矢量甚至在变化吗?当我移动相机时它是否会突然抖动?" 等等.
有没有一个简单的解释为什么latex/pdflatex编译器在以下两种方式中很时髦:
1)在达到"稳态"版本之前,必须进行N次多次编译.如果我使用许多包和引用,N似乎会增长到5或6左右.
2)错误消息几乎总是毫无价值.实际错误未标记.例:
\begin{itemize} % Line 499
\begin{enumerate}
% Comment: error: forgot to close the enumerate block
\item This is a bullet point.
\end{itemize} % Line 503
Run Code Online (Sandbox Code Playgroud)
结果:"扫描\开始{文档}时第1行出错",不是很有用.
我知道有一个独立的"特交换",但我不知道是否有人懂行的有关C++,JAVA,或其他编译器可以提供那些看起来如何支持单编译和正确的错误定位的一些见解.
编辑:这个文档似乎是一个咆哮证明乳胶实现中的黑客,但乳胶的语法/语言属性如何使奇怪的实现成为必要? http://tug.org/texlive/Contents/live/texmf-dist/doc/generic/knuth/tex/tex.pdf
pdf compiler-construction latex pdf-generation compiler-errors
有人向我指出,我在某些c ++代码中看起来像是一个拼写错误:
protected:
Foo x, y,;
Run Code Online (Sandbox Code Playgroud)
我原本以为尾随的逗号会出错,但显然它不是?这是不确定的,或者会发生什么?可能是坏事,因为代码检查程序抱怨它.
类似的问题,但不太具体: 循环中vector :: size()的性能问题
假设我们在一个成员函数中:
void Object::DoStuff() {
for( int k = 0; k < (int)this->m_Array.size(); k++ )
{
this->SomeNotConstFunction();
this->ConstFunction();
double x = SomeExternalFunction(i);
}
}
Run Code Online (Sandbox Code Playgroud)
1)我愿意相信,如果仅调用"SomeExternalFunction",编译器将优化而不是冗余地调用m_Array上的size()......是这种情况吗?
2)你几乎肯定不会从速度上提高速度
int N = m_Array.size()
for( int k = 0; k < N; k++ ) { ... }
Run Code Online (Sandbox Code Playgroud)
如果你正在调用一些非const的成员函数?
编辑不确定这些关于微优化的低票和讽刺评论来自哪里,或许我可以澄清一下:
首先,它不是要优化本身,而是要了解编译器将要修复的内容.通常我使用size()函数,但我现在问,因为这里数组可能有数百万个数据点.
其次,情况是"SomeNotConstFunction"可能极有可能改变数组的大小,或者它的能力可能取决于其他一些被切换的变量.所以,我问的是编译器会在什么时候失败,以及当数组确实可能发生变化时size()的时间成本到底是多少,尽管人为已知的原因不会?
第三,循环中的操作非常简单,只有数百万,但它们是令人尴尬的并行.我希望通过外部放置值可以让编译器矢量化一些工作.
尝试在附录中使用\ref{}或\autoref{}在其上贴上标签,但带有\ref{}和“部分”的只是显示为空,没有的数字/字母\autoref{}。
我不确定是否误解了那里的示例,或者是否存在程序包冲突...
% MainFile.tex
Details of obfuscation of evil are provided in \autoref{app:One}.
\appendix
\section{Obfuscating Evil via Optimized Confusion Matrix} \label{app:One}
Recall that the ....
Run Code Online (Sandbox Code Playgroud)
在pdflatex输出中显示为“在Section中提供”。
我正在寻找GCC与MSVC不同的概述或描述,用于编译+链接具有特化的模板类.例如,这种类型的东西适用于GCC但不适用于MSVC:
// Base.h
template <typename T> struct Base {
template <class G> QString makeTitle(const G* obj){obj->CompilerError();}
};
// in Foo.cpp
template <> template <class G> QString Base<T_1>::makeTitle(const G* obj) { return mystr(); }
void SomeFunc() {
std::cout<< Base<T_1>().makeTitle<myclass>() ;
}
Run Code Online (Sandbox Code Playgroud)
并且解决方案往往是我必须在使用之前在Base.h中声明特化,或者在Windows上存在链接错误.MSVC如何/为什么隐式地实例化,以及GCC如何/为什么对某些cpp文件中声明的特化是健壮的?
相关问题,注意一般'使用前声明'要求: 模板专业化 - MSVC和GCC/MinGW之间的不同行为