小编Pio*_*r G的帖子

INSTALL参数DESTINATION可以为空吗?

通常,类型的相对参数PATH,如"lib"或"source/include"在CMake中使用变量的当前值解析为绝对路径,例如:${CMAKE_INSTALL_PREFIX}在命令的情况下INSTALL.但是,如果我想使用空的相对路径(或者根本不设置它),那么这不起作用,因此得到的绝对路径等于${CMAKE_INSTALL_PREFIX}- CMake生成器会抱怨不存在DESTINATION,尽管没有理由为什么无法解决.

我知道这个问题的两个解决方法,但两者都有它们的缺陷阻止我实现我的目标:

  1. 使用${CMAKE_INSTALL_PREFIX}DESTINATION值.这正确地解决了路径,但是在INSTALL(EXPORT)生成的情况下,生成的路径Target.cmake是绝对的,这使得包不可重定位.
  2. 使用.DESTINATION.这至少在内部生成相对路径Target.cmake,但路径不正确..显然被认为是一个常规文件夹,并且在Target.cmake生成过程中,当_IMPORT_PREFIX确定时,CMake过多地剥离了一个文件夹组件:

    # Compute the installation prefix relative to this file.
    get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
    get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
    
    Run Code Online (Sandbox Code Playgroud)

还有其他解决方法吗?你认为缺乏空的相对路径可能被认为是一个错误吗?

cmake

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

一起使用Platform.exit()和System.exit(int)

我想关闭一个带有指定返回码的javafx应用程序.浏览SO上的答案,我发现了以下成语:

Platform.exit();
System.exit(0); 
Run Code Online (Sandbox Code Playgroud)

例如: 在关闭我的JavaFX程序
或此处之前停止线程:JavaFX应用程序在关闭后仍然运行

这两个方法一个接一个地执行,看起来我们正在尝试复制某些操作.我认为,如果Platform.exit()成功,它不应该返回到System.exit(0)被调用的地方.但是,如果Platform.exit()仅触发在另一个线程上运行的某些关闭操作,则返回并且System.exit(0)可以调用,这可能会导致某些竞争条件,其中两个线程正在尝试关闭同一个应用程序.

那么,这个成语究竟是如何运作的呢?

java multithreading javafx

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

未生成 CMake 目标 RUN_TESTS

在 Visual Studio 2015 中未生成 CMake 目标 RUN_TESTS 的原因可能是什么?我无法包含完整的 CMakeLists.txt,因为它很大,并且由许多具有自己的 CMakeLists.txt 的子项目组成,但它包含enable_testing()执行的命令、添加和构建的测试,根本没有预定义的目标。其他预定义目标如:ZERO_CHECK、INSTALL、ALL_BUILD 也在那里。我的cmake执行是:

cmake -C conaninitialcache.cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Debug <source_path>
Run Code Online (Sandbox Code Playgroud)

难道是柯南的错?

cmake visual-studio-2015

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

如何获取Android中支持的摄像机配置文件列表

记录视频的分辨率根据CamcorderProfile传递给MediaRecorder对象而设置.配置文件由质量常数标识:CamcorderProfile.QUALITY_HIGH, CamcorderProfile.QUALITY_480P, etc.

问题是我无法获得支持的录制分辨率/配置文件列表.我可以使用hasProfile方法,但它只检查是否支持给定的配置文件,而我更愿意拥有此类配置文件的完整列表.

在被Camera.parameters调用的方法中getSupportedVideoSizes(),应该返回我需要的方法,但它返回null,我想这意味着我应该使用它getSupportedPreviewSizes().但预览大小和配置文件列表之间没有对应关系.

android video-streaming android-camera android-mediarecorder

6
推荐指数
0
解决办法
572
查看次数

使用VSPerf.exe而不是VSPerfCmd.exe

我想使用批处理脚本准备一些Visual Studio Profiler(VSP)报告.在Windows 7上,我以下列方式使用VSPerfCmd.exe:

VSPerfCmd /start:sample /output:%OUTPUT_FILE% /launch:%APP% /args:"..."
VSPerfCmd /shutdown
Run Code Online (Sandbox Code Playgroud)

VSPerfCmd /shutdown等待应用程序完成执行,关闭数据收集,然后才生成VSP报告.这就是我需要的.

我切换到Windows Server 2012,现在VSPerfCmd不起作用; 我需要VSPerf改用.问题是我无法获得与VSPerfCmd相同的行为.

具体而言,该/shutdown选项不再可用.可用选项不会等到应用程序完成,而是在执行后立即停止或从进程中分离.这意味着我不能在批处理脚本中使用它们,在那里我一个接一个地运行几个进程.任何想法如何获得理想的行为?

profiling visual-studio-2012

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

C++中的多重继承和多态

请考虑以下代码:

class A1
{
    virtual void a() = 0;
};

class A2
{
    virtual int a(int x) = 0;
};

class B : public A1, public A2
{
    void a() {}
    int  a(int x) { return x; }
};


int main()
{
    A1* pa1;
    pa1 = new B;
    delete pa1;

    A2* pa2;
    pa2 = new B;
    delete pa2;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

类A1和A2只是纯抽象的,因此多重继承应该没有坏处.现在,上面的代码将在析构函数调用期间导致崩溃,但是什么是特殊的,仅针对一个对象:pa2.解决这个问题似乎非常明显 - 使用虚拟析构函数~A1()和~A2().但是,仍有两个问题:

  1. 为什么虚拟析构函数是必需的,因为我们在这些类中没有任何数据?

  2. 为什么pa1和pa2的行为不同?我发现这与类放在父列表中的顺序有关.如果您将其更改为:

class B : public A2, public A1

然后

delete pa1;

会导致崩溃.

c++ polymorphism inheritance

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

istream_iterator <T>表示std :: endl

我有一个以下容器,我想存储在一个文件中:

std::vector< std::vector< Point > > m_vPoints;
Run Code Online (Sandbox Code Playgroud)

Point是一个定义operator<<()operator>>().的基本结构.

该文件的格式为:

point0_0 point0_1 point0_2 ... <-- points from m_vPoints[0]
point1_0 point1_1 ...          <-- points from m_vPoints[1]
...
Run Code Online (Sandbox Code Playgroud)

点元素由分隔',',并且点由' '例如:

-5,4 6,12 -7,32 ...
12,0 -3,4 ...
Run Code Online (Sandbox Code Playgroud)

我设法生成这样一个文件:

std::ostream& operator<<(std::ostream &o, ...)
{
    for(auto it=m_vPoints.begin(); it!=m_vPoints.end(); ++it)
    {
        copy(it->begin(), it->end(), std::ostream_iterator<Point>(o," "));
        o << endl;
    }
    return o;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.然而问题是阅读.当我尝试以下内容时:

std::istream& operator>>(std::istream &is, ...)
{
    int numberOfRows; // assume it is known and valid …
Run Code Online (Sandbox Code Playgroud)

c++ stl istream-iterator

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