来自官方文档的引用:
"指定在安装时运行的规则."
什么是安装时间?
问题在于我:我在Linux上,软件是从只是依赖关系和数据的软件包安装的.没有CMake可以在这里做任何事情.因此,软件的安装时间超出了CMake的范围.那究竟是什么意思呢?
我想将一些我的scala代码移植到c并从当前项目中调用此移植代码.但我没有找到任何关于如何做到这一点的文件.如果只能从sbt获得这将是很好的,因为这是我当前的构建系统.
目前我听说过SNA,但没有文档
我不是在寻找自动scala到c编译器或类似的东西.我只是不知道如何编写scala和c之间的接口
最近我更像是Scala编程语言的用户而不是C++,现在我对移植一行非常简单的代码很感到沮丧
val map = new HashMap[Vec2i,Entity]
Run Code Online (Sandbox Code Playgroud)
它只是拒绝用奇怪的模板错误在C++中编译.C++中Vec2i的等价物是glm :: ivec2,它基本上是一个带有两个整数和一些数学运算符的结构.
这是我得到了多远:
#include <iostream>
#include <unordered_map>
#include <glm/glm.hpp>
using namespace std;
using namespace glm;
struct KeyTraits {
size_t operator()(const ivec2& k) {
return std::hash<int>()(k.x) ^ std::hash<int>()(k.y);
}
bool operator()(const ivec2& a, const ivec2& b) {
return a.x == b.x && a.y == b.y;
}
};
typedef unordered_map<ivec2,int,KeyTraits,KeyTraits> MyMap;
int main(int argc, char **argv)
{
MyMap map;
map[ivec2(2,3)] = 7;
map[ivec2(3,4)] = 8;
for(auto it = map.begin(); it != map.end(); it++) {
cout …Run Code Online (Sandbox Code Playgroud) 我有一个项目运行简单的构建工具作为构建工具.我的所有子项目都共享相同的依赖项,所以我希望它们使用相同的lib文件夹.我可以通过创建到我的共享lib文件夹的符号链接来实现,但我希望在sbt中找到一个配置,让我可以更改为我的库的路径.
override def dependencyPath = ".." / "lib"
Run Code Online (Sandbox Code Playgroud)
不起作用,路径中不允许".."
class Top(info:ProjectInfo) extends ParentProject(info){
lazy val subproject = project("sub","Sub Project",info => SubProject(info,dependencyPath)
class SubProject extends DefaultProject(info:ProjectInfo,libdir:Path){
override def dependencyPath = libdir
}
}
Run Code Online (Sandbox Code Playgroud)
不起作用,dependencyPath是项目的相对路径
dependencyPath.absolutePath
Run Code Online (Sandbox Code Playgroud)
也不起作用,因为absolutePath创建一个带斜杠的String,并且可能无法从带有斜杠的字符串创建路径.
Scala在过滤不可变序列方面非常优雅:
var l = List(1,2,3,4,5,6)
l = l.filter(_%2==1)
Run Code Online (Sandbox Code Playgroud)
但是我如何使用像ArrayBuffer这样的可变集合呢?我发现的只是删除单个元素或切片,或从另一个序列中删除元素,但没有删除谓词给出的元素.
编辑:我希望找到类似的东西:
trait Removable[A] extends Buffer[A]{
def removeIf(p: A => Boolean){
var it1 = 0
var it2 = 0
while(it2 < length){
if( p( this(it2) ) ){
it2 += 1;
}
else {
this(it1) = this(it2)
it1 += 1;
it2 += 1;
}
}
trimEnd(it2-it1)
}
}
Run Code Online (Sandbox Code Playgroud)
这个过滤器在线性时间内可以混合到任何缓冲区中,但只有ArrayBuffer才有意义,在ListBuffers上它会很慢,因为索引确实需要线性时间.
当我更改一个文件时,我的sbt项目几乎总是编译所有内容.有没有办法找出,为什么增量构建失败?
9. Waiting for source changes... (press enter to interrupt)
[warn] Potentially incompatible versions of dependencies of {file:/home/arne/gitprojects/gameengine/}default-a8a2f5:
[warn] org.scala-lang: 2.10.1, 2.10.0
[info] Compiling 1 Scala source to /home/arne/gitprojects/gameengine/target/scala-2.10/classes...
[info] Compiling 35 Scala sources to /home/arne/gitprojects/gameengine/target/scala-2.10/classes...
Run Code Online (Sandbox Code Playgroud)
这很烦人,因为编译所有内容需要一分钟,而不是仅仅几秒钟.
我想用“go build”来构建我的项目。我还没有找到任何有关如何将 swig 与 go 构建过程集成的文档。而且也很重要,它应该是一个C++例子 C很容易。
\n\n/* foo.i */\n%module foo\n%{\n#include "foo.h"\n%}\n%include "foo.h"\nRun Code Online (Sandbox Code Playgroud)\n\n#pragma once\nint foo(int a, int b);\nclass MyClass {\n int a,b,c;\npublic:\n MyClass(int a, int b, int c): a(a),b(b),c(c) {}\n int foo() {\n return (a+b)*c;\n }\n int bar() {\n return a*(b+c);\n }\n};\nRun Code Online (Sandbox Code Playgroud)\n\n#include "foo.h"\nint foo(int a, int b){\n return a*b;\n}\nRun Code Online (Sandbox Code Playgroud)\n\npackage foo\nimport "fmt"\nfunc main(args []string) {\n fmt.Println("Hello World!")\n fmt.Println(foo.foo(12, 17))\n}\nRun Code Online (Sandbox Code Playgroud)\n\narne@ad-X201t ~/g/s/g/k/swig-test> go build\n# …Run Code Online (Sandbox Code Playgroud) 我想为 C API 编写一个 C++ 包装器。为此,最方便的方法是将 C-API 标头包含在我自己的标头中,但这也将标头包含到外部系统的文件中,该文件不应暴露给 C-API。
capi.h
enum MyFlags {
MY_FLAG_A,
MY_FLAG_B,
};
void FOO_bar(int flags);
Run Code Online (Sandbox Code Playgroud)
cppapi.hh
#include "capi.h"
enum class MyFlags {
A = MY_FLAG_A,
B = MY_FLAG_B
};
namespace foo {
void bar(MyFlags flags) {
FOO_bar((int)flags);
}
}
Run Code Online (Sandbox Code Playgroud)
它只是将c命名约定翻译成c++语言特性。因此,当使用该语言的 C++ 变体时,我希望 c_api 不可用于我的自动完成,因此不会意外使用。
我知道如何使用Java库,我可以编写一些循环来完成我需要的东西,但问题是更多,为什么没有内容scala.collection.JavaConverters或scala.collection.JavaConverstions将a转换java.util.stream.Stream为scala.collection.immutable.Stream?
我想做这样的事情:
def streamFiles(path: Path): Stream[Path] = {
Files.newDirectoryStream(path).asScala
}
Run Code Online (Sandbox Code Playgroud)
但相反,我必须写这样的东西:
def streamFiles(path: Path): Stream[Path] = {
val path_it : java.util.Iterator[Path] = Files.newDirectoryStream(path).iterator()
def loop(it: java.util.Iterator[Path]): Stream[Path] =
if( it.hasNext )
it.next #:: loop(it)
else
Stream()
loop(path_it)
}
Run Code Online (Sandbox Code Playgroud) 目前,我有一个简单的着色器,可将静态网格物体渲染到场景中。我想知道是否可以在我的顶点着色器中有第二个输出,该第二个输出在应用投影后为我的对象提供2D边界框。像这样:
#version 330 core
in vec4 Vertex_ms;
in vec4 Normal_ms;
out vec4 Normal_ws;
uniform mat4 Proj;
uniform mat4 View;
uniform mat4 Model;
uniform out vec2 topRight;
uniform out vec2 bottomLeft;
void main() {
gl_Position = Proj * View * Model * Vertex_ms;
topRight = max(gl_Position.xy, topRight);
bottomLeft = min(gl_Position.xy, bottomLeft);
Normal_ws = Model * Normal_ms;
}
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为我不能写制服,但是我的目的是可以对投影顶点进行缩小以得到边界框。
scala swing看起来很有趣,但不知何故它是不完整的,有时我仍然需要使用旧的java类,但我不知道如何正确地包装它们.
那么如何正确包装javax.swing.JInternalFrame以便我可以在MainFrame中将它用作Component?
我试着让这个例子与scala和scala swing库一起工作,我终于设法获得了一个内部框架,但我的MainFrame扭曲了所有内部框架并将它们拉伸直到它们具有与内部空间完全相同的宽度和高度.主机上.
这是我目前的实施:
import swing._
import event._
object InternalFrameDemo extends SimpleSwingApplication{
val top = new MainFrame{
title = "InternalFrameDemo"
preferredSize = new Dimension(640,480)
val menuNew = new MenuItem("New"){
mnemonic = Key.N
action = new Action("new"){
def apply(){
createFrame
}
}
}
val menuQuit = new MenuItem("Quit"){
mnemonic = Key.Q
action = new Action("quit"){
def apply(){
quit()
}
}
}
menuBar = new MenuBar{
contents += new Menu("Document"){
mnemonic = Key.D
contents ++= Seq(menuNew,menuQuit)
}
} …Run Code Online (Sandbox Code Playgroud) scala ×6
c++ ×3
sbt ×3
wrapper ×2
arraybuffer ×1
build ×1
build-system ×1
c ×1
c++11 ×1
cmake ×1
collections ×1
compilation ×1
glm-math ×1
go ×1
header ×1
opengl ×1
scala-swing ×1
stl ×1
swig ×1
swing ×1