小编Ing*_*ngo的帖子

ctest 抱怨“找不到测试配置文件!”

通过CMake,我尝试使用CTest执行简单的测试。我将此配置全部放在一个目录中 (${CMAKE_SOURCE_DIR}):

~$ cat hello.cpp
#include <iostream>

int main() {
    std::cout << "hello world\n";
    return(0);
}

~$ cat CMakeLists.txt
cmake_minimum_required(VERSION 3.18)
project(TEST_CTEST)

enable_testing()
add_executable(test_ctest hello.cpp)
add_test(my_test ./build/test_ctest)
Run Code Online (Sandbox Code Playgroud)

然后我执行:

~$ rm -rf Testing/ build/
~$ cmake -S . -B build
~$ cmake --build build
~$ ./build/test_ctest
hello world

~$ ctest
*********************************
No test configuration file found!
*********************************
Usage

  ctest [options]
Run Code Online (Sandbox Code Playgroud)

我在其他问答中发现的唯一提示是放入enable_testing()root 中CMakeLists.txt。我觉得我错过了一件小事,但我找不到什么。

如何使用 CTest 运行测试?

debian cmake ctest

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

为什么在 C++ 上使用虚拟构造函数会得到指向基类的错误指针?

我想从普通的旧式 C 结构中派生出一个结构::sockaddr_storage,这样我就可以用方法来扩展它来处理它自己的数据。我可以像往常一样对派生结构进行类型转换,以访问存储在该结构中的不同套接字地址 AF_INET6 或 AF_INET。但我不明白使用虚拟析构函数时出现的问题,如下所示:

#include <netinet/in.h>
#include <iostream>

namespace myns {

struct Ssockaddr_storage1 : public ::sockaddr_storage {
    Ssockaddr_storage1() : ::sockaddr_storage() {}
    ~Ssockaddr_storage1() {}
};

// This is only different by using a virtual destructor.
struct Ssockaddr_storage2 : public ::sockaddr_storage {
    Ssockaddr_storage2() : ::sockaddr_storage() {}
    virtual ~Ssockaddr_storage2() {}
};

} // namespace myns

int main() {
    {
        myns::Ssockaddr_storage1 ss;

        std::cout << "Ssockaddr_storage1:\n";
        std::cout << "ss_family   = " << ss.ss_family << "\n";
        sockaddr_in6* sa_in6 = (sockaddr_in6*)&ss;
        std::cout << …
Run Code Online (Sandbox Code Playgroud)

c++ pointers derived-class

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

标签 统计

c++ ×1

cmake ×1

ctest ×1

debian ×1

derived-class ×1

pointers ×1