我有问题在cmake中option
一起使用if-else
.
project(test)
option(TESTE "isso é um teste" OFF)
if(TESTE)
message("true")
else()
message("false")
endif()
add_executable(test main.cpp)
Run Code Online (Sandbox Code Playgroud)
它总是显示true
即使我选择了OFF,我做错了什么?
我需要制作一个脚本,在Android设备上执行很多东西,我的设备是root的,当我进入shell时,我可以给命令su,它可以工作,但我需要传递这个命令,如:
adb shell "
su;
mv /sdcard/Download/app_test /data/local;
cd /data/local;
./app_test;
exit;
exit;
"
Run Code Online (Sandbox Code Playgroud)
当我在su之前输入一些命令时,根据我读的su创建了一个立即返回的新shell,但我需要在su shell上发出命令,我该怎么做?
我想创建一个cmake函数:
function(test src_list dst_list)
# do something
endfunction()
Run Code Online (Sandbox Code Playgroud)
用法:
test(${my_list} chg_list)
Run Code Online (Sandbox Code Playgroud)
这意味着,my_list是一个包含多个字段的列表,chg_list将接收在测试函数内修改的列表.
但它无法正常工作,我怎样才能在cmake中创建一个函数呢?
总是我需要在.travis文件上测试一些更改我需要将我的提交推送到github,如果它失败了,这是一个问题,我想知道,如果有任何方法在提交之前测试我的.travis文件它,最好是在travis-ci vm上,这意味着当我将一些commti推送到github时,我想制作travis所做的过程,但不需要提交或推送我的更改.
我怀疑C++编译器的解析器是否为Clang,编译器如何处理运算符>>
以了解何时它是二元运算符以及何时关闭模板如:std::vector<std::tuple<int, double>>
我想这是在解析器时间内完成的,所以更好的方法是解决那个词汇或仅使用>作为标记,并解决语法分析器中的问题?
根据我的阅读,当你有一个包含数据的抽象基类时,会使用虚基类,所以不会复制类,但是,如果不使用虚拟类,复制类有什么问题?
应该避免使用保存数据的抽象基类吗?
举个例子:
class Storable {
public:
Storable(const string& s);
virtual void read() = 0;
virtual void write() = 0;
virtual ~Storable();
protected:
string file_name; // store in file named s
Storable(const Storable&) = delete;
Storable& operator=(const Storable&) = delete;
};
class Transmitter : public virtual Storable {
public:
void write() override;
// ...
};
class Receiver : public virtual Storable {
public:
void write() override;
// ...
};
class Radio : public Transmitter, public Receiver {
public:
void write() …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Java上的实例对象变量中编写:
public class Test {
public Test () {
System.load("path_lib");
this.jni_result = 0;
}
public PrintVar() {
JniTest();
System.out.println("jni_result: " + Long.toString(this.jni_result));
}
private native long JniTest();
private long jni_result;
}
Run Code Online (Sandbox Code Playgroud)
在C代码中,我创建了写入变量的函数
static void
SetErrorVariable(JNIEnv *env, jobject jobj, long error) {
/* Get a reference to jctf object's class */
jclass TestClass = env->GetObjectClass(jobj);
/* Get the Field ID of the instance variables "jni_result" */
jfieldID fidError = env->GetFieldID(TestClass, "jni_result", "J");
/* Change the variable "jni_result" */
jlong jerror = …
Run Code Online (Sandbox Code Playgroud) 我正在使用愚蠢的范围保护,它正在工作,但它会生成一个警告,说该变量未使用:
warning: unused variable ‘g’ [-Wunused-variable]
Run Code Online (Sandbox Code Playgroud)
代码:
folly::ScopeGuard g = folly::makeGuard([&] {close(sock);});
Run Code Online (Sandbox Code Playgroud)
如何避免这种警告?
在C++中有几种方法可以将函数作为参数传递,但我想了解每种方法的优点和优点,例如,从算法中查看函数的签名:
template <class RandomAccessIterator, class Compare>
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);
Run Code Online (Sandbox Code Playgroud)
为什么std算法使用模板来传递函数而不是std :: function?
为什么线程使用移动语义和算法函数不?
template <class Fn, class... Args>
explicit thread (Fn&& fn, Args&&... args);
Run Code Online (Sandbox Code Playgroud)
PS:我无视C中用作函数指针的方式.
只有当我的所有src都在jni foler中时,我才能使用ndk-build构建一个android共享库,但是,我想使用ndk-build构建一个共享库而不需要jni文件夹,因为我的项目没有java代码,那我怎么能这样做?
我简单的Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ctest
LOCAL_SRC_FILES := main.cpp
# for logging
LOCAL_LDLIBS += -llog
# for native asset manager
LOCAL_LDLIBS += -landroid
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud) 我写了这个简单的代码,我期待一个不同的结果.
struct Test {
int value_;
Test(): value_(0) {
std::cout << "Constructor: "<< value_ << "\n";
}
Test(int value): value_(value) {
std::cout << "Constructor: "<< value_ << "\n";
}
~Test() {
std::cout << "Destructor: "<< value_ << "\n";
}
};
int main(int argc, char **argv) {
Test t;
t = Test(10);
t = Test(15);
t = Test(20);
t = Test(25);
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
Constructor: 0
Constructor: 10
Destructor: 10
Constructor: 15
Destructor: 15
Constructor: 20
Destructor: 20
Constructor: 25
Destructor: 25 …
Run Code Online (Sandbox Code Playgroud) 我需要在SPIR-V中编译OpenCL内核以与Vulkan一起使用,我尝试使用Google CLSPV https://github.com/google/clspv,但问题出现在矢量化,像vload8这样的功能不起作用.所以我需要使用clang在SPIR-V中编译OpenCL内核.
我正在尝试使用训练模型在tensorflow上保存一个文件,我正在尝试使用这个简单的图:
import tensorflow as tf
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = a + b # + provides a shortcut for tf.add(a, b).
builder = tf.saved_model_builder.SavedModelBuilder(".")
sess = tf.Session()
builder.add_meta_graph([tag_constants.SERVING])
builder.save()
print(sess.run(adder_node, {a: 3, b: 4.5}))
print(sess.run(adder_node, {a: [1, 3], b: [2, 4]}))
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误:
AttributeError: 'module' object has no attribute 'saved_model_builder'
Run Code Online (Sandbox Code Playgroud)
说它在tensorflow模块上不存在,我按照这个官方教程:https://www.tensorflow.org/programmers_guide/saved_model
如何在tensorflow中保存训练好的模型?
c++ ×6
c++11 ×5
android ×2
android-ndk ×2
cmake ×2
adb ×1
build ×1
c ×1
clang ×1
constructor ×1
folly ×1
function ×1
github ×1
if-statement ×1
inheritance ×1
java ×1
linux ×1
llvm-clang ×1
oop ×1
opencl ×1
options ×1
parsing ×1
python ×1
scopeguard ×1
shell ×1
spir-v ×1
tensorflow ×1
travis-ci ×1
vulkan ×1