CMake header 唯一依赖
CMake header only dependency
我在使用 CMake 对 catch2 进行简单测试时遇到了一些问题 运行。因为 catch 是 header 只有我得到的印象是它很容易放入任何项目所以我想我只是像普通的 header 文件一样包含它。
项目结构:
-build
-external
-Catch2
catch2.hpp
CMakeLists.txt
tester.cpp
CMakeLists.txt:
cmake_minimum_required(VERSION 3.12)
project(Test VERSION 1.0.0)
include_directories(external)
enable_testing()
add_executable(tester tester.cpp)
add_test(Tester tester)
tester.cpp:
#define CATCH_CONFIG_MAIN
#include "Catch2\catch.hpp"
TEST_CASE( "1 is 1" ) {
REQUIRE( 1 == 1 );
}
输出:
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.03 sec
The following tests FAILED:
1 - Tester (Exit code 0xc0000139
)
Errors while running CTest
显然测试应该通过,但它没有。由于我是 CMake 和 catch2 领域的初学者,所以我很难确定问题所在。我可以肯定地说的是找到 catch.hpp
并且没有链接器错误,它只是 return 一些错误代码。
我环顾四周,发现了这个:
CMake Header from library not found when implementing in catch test case
但是没有答案,反正作者好像也没有同样的问题
这就是我构建和 运行 测试的方式(位于构建目录中):
cmake .. -G "MinGW Makefiles" && mingw32-make && ctest
感谢任何帮助:)
好吧,我删除了 catch 并只是玩弄了 mingw,显然我只是通过使用 std::string
得到了同样的错误。有人说这与缺少 DLL 文件有关。我 运行 对可执行文件的依赖遍历器,确实缺少一堆 DLL。我现在不知道该做什么或从哪里得到这些,所以我放弃了 mingw 并尝试了 cygwin 方法。
但是在 cygwin 中使用 cmake 我没有找到任何适合我的开发环境的生成器 (windows)。
然后我转而生成一个 visual studio 项目(我从一开始就避免这样做,因为我不想在 IDE 中开发)。但我发现我可以使用 msbuild 从生成的 visual studio 项目构建可执行文件,它的工作原理非常棒,有 catch。
我在使用 CMake 对 catch2 进行简单测试时遇到了一些问题 运行。因为 catch 是 header 只有我得到的印象是它很容易放入任何项目所以我想我只是像普通的 header 文件一样包含它。
项目结构:
-build
-external
-Catch2
catch2.hpp
CMakeLists.txt
tester.cpp
CMakeLists.txt:
cmake_minimum_required(VERSION 3.12)
project(Test VERSION 1.0.0)
include_directories(external)
enable_testing()
add_executable(tester tester.cpp)
add_test(Tester tester)
tester.cpp:
#define CATCH_CONFIG_MAIN
#include "Catch2\catch.hpp"
TEST_CASE( "1 is 1" ) {
REQUIRE( 1 == 1 );
}
输出:
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.03 sec
The following tests FAILED:
1 - Tester (Exit code 0xc0000139
)
Errors while running CTest
显然测试应该通过,但它没有。由于我是 CMake 和 catch2 领域的初学者,所以我很难确定问题所在。我可以肯定地说的是找到 catch.hpp
并且没有链接器错误,它只是 return 一些错误代码。
我环顾四周,发现了这个:
CMake Header from library not found when implementing in catch test case
但是没有答案,反正作者好像也没有同样的问题
这就是我构建和 运行 测试的方式(位于构建目录中):
cmake .. -G "MinGW Makefiles" && mingw32-make && ctest
感谢任何帮助:)
好吧,我删除了 catch 并只是玩弄了 mingw,显然我只是通过使用 std::string
得到了同样的错误。有人说这与缺少 DLL 文件有关。我 运行 对可执行文件的依赖遍历器,确实缺少一堆 DLL。我现在不知道该做什么或从哪里得到这些,所以我放弃了 mingw 并尝试了 cygwin 方法。
但是在 cygwin 中使用 cmake 我没有找到任何适合我的开发环境的生成器 (windows)。
然后我转而生成一个 visual studio 项目(我从一开始就避免这样做,因为我不想在 IDE 中开发)。但我发现我可以使用 msbuild 从生成的 visual studio 项目构建可执行文件,它的工作原理非常棒,有 catch。