我正在努力使用add_custom_command.让我详细解释一下这个问题.
我有这些cxx文件和hxx文件.我在每个脚本上运行一个perl脚本来生成某种翻译文件.该命令看起来像
perl trans.pl source.cxx -o source_cxx_tro
Run Code Online (Sandbox Code Playgroud)
同样对于header.hxx文件也是如此.
所以我最终会得到一些多个命令(每个命令用于一个文件)
然后我在这些命令生成的输出上运行另一个perl脚本(source_cxx_tro,header_hxx_tro)
perl combine.pl source_cxx_tro header_hxx_tro -o dir.trx
Run Code Online (Sandbox Code Playgroud)
dir.trx是输出文件.
我有这样的事情.
Loop_Over_All_Files()
Add_Custom_Command (OUTPUT ${trofile} COMMAND perl trans.pl ${file} -o ${file_tro})
List (APPEND trofiles ${file_tro})
End_Loop()
Add_Custom_Command (TARGET LibraryTarget POST_BUILD COMMAND perl combine.pl ${trofiles} -o LibraryTarget.trx)
Run Code Online (Sandbox Code Playgroud)
我期望在构建post构建目标时,首先构建trofiles.但事实并非如此.$ {trofiles}没有构建,因此post build命令以失败告终.有什么办法可以告诉POST_BUILD命令取决于以前的自定义命令吗?
有什么建议 ?
谢谢,苏里亚
我有一个带功能模板的基类.
我派生自基类,并尝试在派生类中对函数模板进行专门化
我做了这样的事.
class Base
{
..
template <typename T>
fun (T arg) { ... }
};
class Derived : public Base
{
...
} ;
template <>
Derived::fun(int arg);
Run Code Online (Sandbox Code Playgroud)
在.cpp文件中,我提供了模板特化的实现.
这适用于MSVC 8.0和g ++ - 4.4.2抱怨Derived类中缺少函数声明乐趣.
我不知道哪个编译器的行为正确.非常感谢任何帮助.
谢谢,苏里亚
我有这个程序
#include <iostream>
#include <sstream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std ;
#if 0
namespace skg
{
template <class T>
struct Triplet ;
}
template <class T>
ostream& operator<< (ostream& os, const skg::Triplet<T>& p_t) ;
#endif
namespace skg
{
template <class T>
struct Triplet
{
// friend ostream& ::operator<< <> (ostream& os, const Triplet<T>& p_t) ;
private:
T x, y, z ;
public:
Triplet (const T& p_x, const T& p_y, const T& p_z)
: x(p_x), y(p_y), z(p_z) …Run Code Online (Sandbox Code Playgroud) 我是emacs的新手.我在redhat linux上使用emacs-24.1,并试图评估一个elisp表达式.我想要emacs做的是评估elisp表达式而不启动emacs本身.我正在尝试不同的事情
emacs --eval '(+ 2 3)'
Run Code Online (Sandbox Code Playgroud)
我不知道emacs是否正在评估表达式,但结果未显示在控制台上,并且emacs窗口出现.接下来我尝试了这个
emacsclient --eval '(+ 2 3)'
Run Code Online (Sandbox Code Playgroud)
Emacs客户端期待服务器.它找不到服务器,因此抛出错误(无法找到socket.启动服务器等).所以我启动了一个服务器(服务器名称是SERVER)并再次运行emacsclient
emacsclient --server-file=SERVER -e '(+ 2 3)'
Run Code Online (Sandbox Code Playgroud)
这次,emacs评估表达式并在控制台上打印结果.这是因为emacs正在使用现有服务器来评估表达式.现在,当服务器未运行时,我遇到了问题.
emacsclient --server-file=ANOTHER_SERVER -e '(+ 2 3)' -a emacs
Run Code Online (Sandbox Code Playgroud)
这一次,我在控制台上没有收到任何错误.Emacs正在启动一个新窗口,因为-a(我的.emacs中有(server-start)命令,server-name设置为ANOTHER_SERVER).但emacs正在尝试编辑该文件(+ 2 3).它显示在模式行上.我糊涂了.emacsclient --help向我展示了这个
-e, --eval Evaluate the FILE arguments as ELisp expressions
Run Code Online (Sandbox Code Playgroud)
和emacs手册说这个.
'-e'
'--eval'
Tell Emacs to evaluate some Emacs Lisp code, instead of visiting some files.
When this option is given, the arguments to emacsclient are interpreted as a
list of expressions to evaluate, not as a list …Run Code Online (Sandbox Code Playgroud) 我试图找出Visual C++编译器(MSVC)的所有预处理器定义.我可以
gcc -dM -E - < /dev/null
Run Code Online (Sandbox Code Playgroud)
在GCC上转储所有预处理器定义.我们有与Visual C++编译器编译器类似的东西吗?
我正在使用Visual C++ 9.0.
我正在使用随着VS2005与Boost-1.42.0一起发布的Boost.Spirit.我的问题是这样的.
我有这个用逗号分隔的字符串.它的前3个字段是字符串,其余是数字.像这样.
String1,String2,String3,12.0,12.1,13.0,13.1,12.4
Run Code Online (Sandbox Code Playgroud)
我的规则是这样的
qi::rule<string::iterator, qi::skip_type> stringrule = *(char_ - ',')
qi::rule<string::iterator, qi::skip_type> myrule= repeat(3)[*(char_ - ',') >> ','] >> (double_ % ',') ;
Run Code Online (Sandbox Code Playgroud)
我正在尝试将数据存储在这样的结构中.
struct MyStruct
{
vector<string> stringVector ;
vector<double> doubleVector ;
} ;
MyStruct var ;
Run Code Online (Sandbox Code Playgroud)
我把它包装在BOOST_FUSION_ADAPT_STRUCTURE中以与精神一起使用它.
BOOST_FUSION_ADAPT_STRUCT (MyStruct, (vector<string>, stringVector) (vector<double>, doubleVector))
Run Code Online (Sandbox Code Playgroud)
我的解析函数解析该行并返回true和after
qi::phrase_parse (iterBegin, iterEnd, myrule, boost::spirit::ascii::space, var) ;
Run Code Online (Sandbox Code Playgroud)
我期待var.stringVector和var.doubleVector被正确填充.但事实并非如此.
出了什么问题?
代码示例位于此处
谢谢,苏里亚
我有一个自定义容器,它以两种不同的方式实现,但只有一个接口.这样的事情.
class Vector
{
virtual Iterator begin() = 0;
virtual Iterator end () = 0 ;
... // some more functions.
} ;
class VectorImplA : public Vector
{
Iterator begin() { return m_data.begin() ; }
Iterator end () { return m_data.end() ; }
private:
SomeFloatContainer m_data ;
} ;
class VectorImplB : public Vector
{
Iterator begin() { return m_data.end() ; }
Iterator end() ; { return m_data.end() ; }
private:
std::vector <float> m_data ;
} ;
Run Code Online (Sandbox Code Playgroud)
我需要的是Iterator的统一接口,以便我可以在基类中使用它.有任何想法吗 ?
c++ ×4
inheritance ×2
templates ×2
boost ×1
boost-spirit ×1
cmake ×1
elisp ×1
emacs ×1
emacsclient ×1
friend ×1
gcc ×1
iterator ×1
outputstream ×1
visual-c++ ×1