我有一个 CMake 的问题:我execute_process()
用来设置一个变量,我希望该变量将它作为选项传递给编译器。CMake 在变量周围设置引号,以便编译器得到错误的输入。
具体来说:我只需要使用特定目标编译 SDL2。
# CMakeLists.txt
execute_process(COMMAND "sdl2-config" "--cflags" OUTPUT_VARIABLE SDL2_CFLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
target_compile_options(SpecialTarget PUBLIC ${SDL2_CFLAGS})
Run Code Online (Sandbox Code Playgroud)
的输出sdl2-config --cflags
是:
-I/usr/include/SDL2 -D_REENTRANT
Run Code Online (Sandbox Code Playgroud)
CMake 现在以这种方式调用编译器:
/usr/bin/c++ ... "-I/usr/include/SDL2 -D_REENTRANT" ...
Run Code Online (Sandbox Code Playgroud)
这当然行不通。我需要去掉引号。
如果一个使用
add_definitions(${SDL2_CFLAGS})
Run Code Online (Sandbox Code Playgroud)
一切正常。但我需要,target_compile_options
因为我不想要所有目标上的选项。
我正在用gdb调试我的c ++程序.double
由于德语区域设置,我很难设置一个简单的变量.
gdb不接受带小数点的值.键入德语小数点(逗号),gdb忽略逗号后的所有内容.
(gdb) p this->foodSupply
$1 = 1
(gdb) set this->foodSupply = 4.3
Ungültige Nummer »4.3«.
(gdb) p this->foodSupply
$1 = 1
(gdb) set this->foodSupply = 4,3
(gdb) p this->foodSupply
$3 = 4
Run Code Online (Sandbox Code Playgroud)
我想我可以通过运行gdb来避免这个问题LC_ALL=EN gdb ...
.但是因为在我的IDE工作时并不那么容易,我想知道是否还有其他方法.
德国用户如何在gdb中键入小数点?
我想在C ++中实现一个类层次结构:
简化我有此代码:
#include <iostream>
class IClass {
public:
virtual int commonMethod() const = 0;
};
class Class : public virtual IClass {
protected:
int commonValue;
public:
Class(int commonValue) : commonValue(commonValue) {}
virtual int commonMethod() const {
return commonValue;
}
};
class IClassDerived : public virtual IClass {
public:
virtual void specialMethod() = 0;
};
class ClassDerived : public Class, public virtual IClassDerived {
public:
ClassDerived(int commonValue) : Class(commonValue) {}
virtual void specialMethod() {
// do something …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 FreeMarker 中的内置功能,但在某些情况下遇到问题。
为什么这有效
<#assign foo="bar" />
${foo?trim}
Run Code Online (Sandbox Code Playgroud)
但不是那个
<#assign foo>
bar
</#assign>
${foo?trim}
Run Code Online (Sandbox Code Playgroud)
?
我收到这个异常:
FreeMarker template error:
For "?trim" left-hand operand: Expected a string or something automatically convertible to string (number, date or boolean), but this has evaluated to a markup_output (wrapper: f.c.TemplateXHTMLOutputModel):
==> foo [in template "template.ftl" at line 23, column 7]
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${foo?trim} [in template "faq.ftl" at line 23, column 5]
----
Java stack trace (for programmers): …
Run Code Online (Sandbox Code Playgroud)