小编INS*_*INS的帖子

如果环境变量有空格,则find_path不起作用

我正在尝试让我的cmake项目自动编译,但是当我的路径包含空格时我遇到了一些困难.

这是我的命令行(windows命令提示符)

C:\Code\codetrainerplugins-build>type %CODETRAINER_PATH%\include\common\exportapi.h
#pragma once
... the file is found ...
Run Code Online (Sandbox Code Playgroud)

这是我的CMakeLists.txt文件:

CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
PROJECT (CodeTrainerPlugins)

MESSAGE("$ENV{CODETRAINER_PATH}")

FIND_PATH   (CODETRAINER_FRAMEWORK_PATH 
                NAMES include/common/ExportApi.h
                PATHS
                    ENV CODETRAINER_PATH
            )


if (CODETRAINER_FRAMEWORK_PATH)
    MESSAGE(STATUS "CodeTrainer Framework found at: ${CODETRAINER_FRAMEWORK_PATH}")
else()
    MESSAGE(FATAL_ERROR "CodeTrainer Framework not found")
endif()

ADD_SUBDIRECTORY(function)
ADD_SUBDIRECTORY(test)
Run Code Online (Sandbox Code Playgroud)

这是CODETRAINER_PATH变量包含空格时的输出(请参阅路径中的空格):

C:\Code\codetrainerplugins-build>echo %CODETRAINER_PATH%
"C:\Code Trainer"
C:\Code\codetrainerplugins-build>
C:\Code\codetrainerplugins-build>cmake ..\codetrainerplugins
-- Building for: Visual Studio 10
"C:\Code Trainer"
CMake Error at CMakeLists.txt:16 (MESSAGE):
  CodeTrainer Framework not found


-- Configuring incomplete, errors occurred!
See also "C:/Code/codetrainerplugins-build/CMakeFiles/CMakeOutput.log".

C:\Code\codetrainerplugins-build>
Run Code Online (Sandbox Code Playgroud)

但是当使用的路径没有空格时,一切正常(见下文):

C:\Code\codetrainerplugins-build>echo …
Run Code Online (Sandbox Code Playgroud)

windows cmake

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

布尔表达式的等价性

我有一个问题,包括比较布尔表达式(OR是+,AND是*).更准确地说,这是一个例子:

我有以下表达式:"A + B + C",我想将它与"B + A + C"进行比较.比较像字符串不是一个解决方案 - 它会告诉我表达式不匹配当然是假的.关于如何比较这些表达式的任何想法?

关于如何解决这个问题的任何想法?我接受任何建议,但(作为注释)我的应用程序中的最终代码将用C++编写(C当然接受).

正常表达式也可以包含括号:

(A*B*C)+ DA + B*(C + D)+ X*Y.

提前致谢,

尤利安

c c++ language-agnostic boolean-expression

5
推荐指数
2
解决办法
2144
查看次数

如何将数据从C++导出到MatLab

我写了一个c ++程序,输出一个随机数列表.我被要求将这些数字导出到MatLab以生成直方图和其他图形.我怎样才能做到这一点?(我是初学者;请指定我需要添加的额外文件和步骤).谢谢.

c++ matlab

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

以已知方向移动一定距离(以米为单位)的GPS位置

我从设备中获取了一些GPS样本数据.我需要做的是将数据"移动"到"左",比如1到5米.我知道如何做移动部件,唯一的问题是移动不像我想要的那样准确.

我目前在做什么:

  • 我拿GPS坐标(纬度,经度对)
  • 我使用板carrée转换它们.
  • 我将得到的坐标缩放到纵向距离(x上的距离)和纬度距离(y上的距离) - 想象整个GPS样本数据位于由最大和最小纬度/经度限制的矩形内.我使用经度和纬度的极值之间的大圆距离公式计算这些距离.
  • 我按想要的方向移动点x
  • 我转换回GPS坐标

我真的没有我想要的准确性.例如,向左移动3米意味着小于3米(大约1.8米 - 可能是2米).

做这些事情的已知解决方案是什么?我需要一个最远偏离真实点0.2-0.5米的解决方案(不像当前情况那样1.2).

后来:这种做法好吗?通过这种方式,我的意思是将GPS坐标转换为平面坐标并返回到GPS.还有其他方法吗?

LATER2:转换为保形地图的方法可能是将要使用的方法.如果是一个小矩形,并且因为在极点没有道路,可能会使用墨卡托.意见?

谢谢,

尤利安

PS:我正在研究小区域 - 所以想象一下我正在谈论的边界矩形,每边的长度不超过5公里.(所以一个5x5km的矩形是最大的).

algorithm math gps coordinates

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

最适合多条线的交叉点

我正在尝试解决以下问题:

  • 我正在分析图像,我从这个分析中得到了一组段
  • 我想知道这些线的交叉点(最合适)

我正在使用这个opencv的函数cvSolve.对于相当好的输入一切正常.

我遇到的问题是,当我只有一个坏段作为输入时,结果与预期的不同.

坏线影响结果

细节:

  • 左上角的图像显示影响结果的"孤独"紫色线条(所有线条都用作输入).

  • 右上角的图像显示了单个紫色线(一个被移除)如何影响结果.

  • 左下方的图像显示了我们想要的东西 - 预期的线条交叉(两条紫色线都消除了).

  • 右下图显示另一条紫色线(另一条紫色线)如何影响结果.

你只能看到两行,结果与预期的完全不同.任何有关如何避免这种情况的想法都值得赞赏

谢谢,

尤利安

algorithm geometry opencv computational-geometry

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

如何证明fread调用ReadFile和fopen调用CreateFile

我知道这听起来有点愚蠢,但有没有办法在Windows上证明:

  • fopen 函数调用winapi函数CreateFile(或CreateFileEx)
  • fread 函数调用winapi函数ReadFile(或ReadFileEx)

如果有更通用的方法来确定某些C库函数如何调用winapi函数,我也很乐意将其作为答案.

我们正在进行辩论,我对一些证据很感兴趣.我主要对Visual C感兴趣

c windows winapi

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

如何对涉及文件输入输出的方法进行单元测试?

我正在使用Parasoft的C++ Test来测试C++代码.我遇到了以下问题.我有一个类似下一个函数(伪代码):

bool LoadFileToMem(const std::string& rStrFileName)
{
    if( openfile(rStrFileName) == successfull )
    {
         if( get_file_size() == successfull )
         {
            if( read_entire_file_to_buffer() == successfull )
            {
                return true;
            }
            return false;
         }
         return false;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我在这种情况下的问题是:

我应该使用存根文件系统功能吗?或者我应该包含用于运行单元测试的特定样本测试文件?

在我的例子中,std :: fstream类用于文件输入.

有没有更好的建议?(如果在C++测试中完成但不是强制性的最佳).

c++ unit-testing file stub

4
推荐指数
2
解决办法
6175
查看次数

断言和单元测试不兼容吗?

我有一些问题涉及从assert.h测试包含断言宏的一些函数的事实.

如果断言失败,测试也会失败.这给我留下了一些永远不会起作用的测试用例.

例如,一个函数而不是指示失败(返回false或类似的东西)断言.

有没有解决方案(包含断言的单元测试函数)?

c c++ unit-testing assertions

4
推荐指数
3
解决办法
6832
查看次数

在C和C++中,我可以使用包含空格的宏定义吗?

我想知道宏定义是否可以包含空格.我们以此代码为例:

#define MACRO_PARAM int param2

int function(int param1, MACRO_PARAM)
{
    return param1+param2;
}
Run Code Online (Sandbox Code Playgroud)

这适用于Visual Studio 8和gcc 3.4.5(mingw).对我来说这暂时还不错,但这是标准吗?或者我可以在不同的编译器中依赖这种行为吗?

谢谢,

尤利安

PS:回答这个问题why would you wanna do that?:我正在使用bison flex进行项目,我正在尝试制作一些可重入的东西(我需要为函数参数声明一些宏).

c c++ macros

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

高效的字符串到十六进制功能

我在嵌入式平台上使用旧版本的python(在Telit平台上使用Python 1.5.2+).我遇到的问题是我将字符串转换为十六进制的函数.这很慢.这是功能:

def StringToHexString(s):
    strHex=''

    for c in s:
        strHex = strHex + hexLoookup[ord(c)]

    return strHex
Run Code Online (Sandbox Code Playgroud)

hexLookup是一个查找表(python列表),包含每个字符的所有十六进制表示.

我愿意尝试一切(一个更紧凑的功能,一些我不知道的语言技巧).更清楚的是基准测试(该平台的分辨率为1秒):

N是要转换为十六进制的输入字符数,时间以秒为单位.

  • N | 时间(秒)
  • 50 | 1
  • 150 | 3
  • 300 | 4
  • 500 | 8
  • 1000 | 15
  • 1500 | 23
  • 2000年| 31

是的,我知道,这很慢......但如果我能获得1秒或2秒的时间,这将是一个进步.

所以任何解决方案都受到欢迎,尤其是那些了解python性能的人.

谢谢,

尤利安

PS1 :(在测试提供的建议后 - 保持ord通话):

def StringToHexString(s):
    hexList=[]
    hexListAppend=hexList.append

    for c in s:
        hexListAppend(hexLoookup[ord(c)])

    return ''.join(hexList)
Run Code Online (Sandbox Code Playgroud)

通过此功能,我获得了以下时间:1/2/3/5/12/19/27(显然更好)

PS2(无法解释,但速度非常快)非常感谢Sven Marnach的想法!!!:

def StringToHexString(s):
    return ''.join( map(lambda param:hexLoookup[param], map(ord,s) ) ) …
Run Code Online (Sandbox Code Playgroud)

python hex

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