小编Arn*_*rne的帖子

什么是CMake安装时间?

来自官方文档的引用:

"指定在安装时运行的规则."

什么是安装时间?

问题在于我:我在Linux上,软件是从只是依赖关系和数据的软件包安装的.没有CMake可以在这里做任何事情.因此,软件的安装时间超出了CMake的范围.那究竟是什么意思呢?

cmake

10
推荐指数
2
解决办法
2222
查看次数

scala c整合

我想将一些我的scala代码移植到c并从当前项目中调用此移植代码.但我没有找到任何关于如何做到这一点的文件.如果只能从sbt获得这将是很好的,因为这是我当前的构建系统.

目前我听说过SNA,但没有文档

我不是在寻找自动scala到c编译器或类似的东西.我只是不知道如何编写scala和c之间的接口

c scala sbt

8
推荐指数
2
解决办法
8813
查看次数

glm :: ivec2作为无序地图的关键

最近我更像是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)

c++ stl c++11 glm-math

8
推荐指数
2
解决办法
3110
查看次数

如何在Visual Studio代码中重新映射“ Alt + Click”操作?

根据此处的文档我可以通过alt+Click在编辑器中使用在Visual Studio代码中添加多个光标。遗憾的是,窗口管理器已经使用alt + drag来移动窗口,因此visual-studio-code不会获得任何键事件。那么,如何在Visual Studio代码中更改该键盘配置?我在默认的组合键文件中找不到任何内容。

我不是在寻找能够改变我的窗口管理器的解决方案,我真的很喜欢这种行为,并且已经很长时间了很频繁地使用它。

visual-studio-code

7
推荐指数
2
解决办法
1417
查看次数

如何在Simple Build Tool的子项目中共享我的lib文件夹

我有一个项目运行简单的构建工具作为构建工具.我的所有子项目都共享相同的依赖项,所以我希望它们使用相同的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 sbt

5
推荐指数
1
解决办法
637
查看次数

scala ArrayBuffer使用谓词删除所有元素

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上它会很慢,因为索引确实需要线性时间.

scala arraybuffer

5
推荐指数
1
解决办法
3513
查看次数

sbt几乎每次都重新编译一切

当我更改一个文件时,我的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)

这很烦人,因为编译所有内容需要一分钟,而不是仅仅几秒钟.

scala compilation build sbt

5
推荐指数
1
解决办法
611
查看次数

有一个如何使用 SWIG 通过 go build 生成 C++ 构建的示例吗?

我想用“go build”来构建我的项目。我还没有找到任何有关如何将 swig 与 go 构建过程集成的文档。而且也很重要,它应该是一个C++例子 C很容易。

\n\n

foo.swig

\n\n
/* foo.i */\n%module foo\n%{\n#include "foo.h"\n%}\n%include "foo.h"\n
Run Code Online (Sandbox Code Playgroud)\n\n

foo.h

\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};\n
Run Code Online (Sandbox Code Playgroud)\n\n

foo.cpp

\n\n
#include "foo.h"\nint foo(int a, int b){\n    return a*b;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

主程序

\n\n
package foo\nimport "fmt"\nfunc main(args []string) {\n    fmt.Println("Hello World!")\n    fmt.Println(foo.foo(12, 17))\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出

\n\n
arne@ad-X201t ~/g/s/g/k/swig-test> go build\n# …
Run Code Online (Sandbox Code Playgroud)

c++ swig build-system go

3
推荐指数
1
解决办法
3044
查看次数

将头文件包含到头文件中而不将其内容暴露给包含器

我想为 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 不可用于我的自动完成,因此不会意外使用。

c++ header wrapper

3
推荐指数
1
解决办法
652
查看次数

将java.util.stream.Stream转换为Scala Stream

我知道如何使用Java库,我可以编写一些循环来完成我需要的东西,但问题是更多,为什么没有内容scala.collection.JavaConvertersscala.collection.JavaConverstions将a转换java.util.stream.Streamscala.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)

collections scala scala-collections

3
推荐指数
1
解决办法
2910
查看次数

顶点着色器中的边界框

目前,我有一个简单的着色器,可将静态网格物体渲染到场景中。我想知道是否可以在我的顶点着色器中有第二个输出,该第二个输出在应用投影后为我的对象提供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)

这是行不通的,因为我不能写制服,但是我的目的是可以对投影顶点进行缩小以得到边界框。

opengl vertex-shader

1
推荐指数
1
解决办法
1310
查看次数

带有scala.swing的JInternalFrame

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)

swing scala wrapper jinternalframe scala-swing

0
推荐指数
1
解决办法
583
查看次数