问题背景
我正在尝试将UnitTest++整合到基于linux的C++17项目模板中。我在windows上很容易做到这一点,但由于某些原因,我在linux上遇到了一些重大问题。
我在Windows上使用了Cmake3.21,我是,目前在Linux上使用Cmake 3.17.5。
我从UnitTest++下载了UnitTest++ Github源代码。然后将tar.gz扔到ProjectTemplate中的3 3rdParty文件夹中。我在建造它时遇到了很大困难。因此,除了我添加的第三方库和文件夹影响的内容之外,我已经删除了所有内容。因此,此时所有main()函数都非常简单。我只是希望看到那些无所作为的可执行程序。
问题点
我已经包括了构建输出。
为什么testExecutable没有被制造出来?更重要的是,为什么我的UnitTest++不能打开?
目录结构
ProjectTemplate
+3rdParty
-CMakeLists.txt (3rd party cmake)
-unittest-cpp-2.0.0.tar.gz
+build
+src
-ClassTemplate.cpp (just a plain class file - compiles fine)
-ClassTemplate.hpp (just a plain class file - compiles fine)
-main.cpp (basic int main function)
+UnitTests
-CMakeLists.txt (unit test cmake)
-UnittestcppMain.cpp (basic int main function)
-CMakeLists.txt (root cmake)生成输出
来自cmake生成/配置的输出
[main] Configuring folder: ProjectTemplate
[proc] Executing command: /usr/bin/cmake3 --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/opt/rh/devtoolset-8/root/usr/bin/gcc -DCMAKE_CXX_COMPILER:FILEPATH=/opt/rh/devtoolset-8/root/usr/bin/g++ -S/path/to/ProjectTemplate -B/path/to/ProjectTemplate/build -G "Unix Makefiles"
[cmake] Not searching for unused variables given on the command line.
[cmake] -- The CXX compiler identification is GNU 8.3.1
[cmake] -- Check for working CXX compiler: /opt/rh/devtoolset-8/root/usr/bin/g++
[cmake] -- Check for working CXX compiler: /opt/rh/devtoolset-8/root/usr/bin/g++ - works
[cmake] -- Detecting CXX compiler ABI info
[cmake] -- Detecting CXX compiler ABI info - done
[cmake] -- Detecting CXX compile features
[cmake] -- Detecting CXX compile features - done
[cmake] Made it to this
[cmake] -- Configuring done
[cmake] -- Generating done
[cmake] -- Build files have been written to: /path/to/ProjectTemplate/build生成输出
[main] Building folder: ProjectTemplate
[build] Starting build
[proc] Executing command: /usr/bin/cmake3 --build /path/to/ProjectTemplate/build --config Debug --target ExecutableName -j 18 --
[build] Scanning dependencies of target ExecutableLib
[build] [ 25%] Building CXX object CMakeFiles/ExecutableLib.dir/src/ClassTemplate.cpp.o
[build] [ 50%] Linking CXX static library libExecutableLib.a
[build] [ 50%] Built target ExecutableLib
[build] Scanning dependencies of target ExecutableName
[build] [ 75%] Building CXX object CMakeFiles/ExecutableName.dir/src/main.cpp.o
[build] [100%] Linking CXX executable ExecutableName
[build] [100%] Built target ExecutableName
[build] Build finished with exit code 0更新
经过273 K的研究,提出了解决方案。我意外地把VSCode中的目标从"All“切换到”VSCode“。我已经包括了一个屏幕截图的问题领域和它必须设置,以避免这个问题的未来用户谁可能正在使用VSCode和绊脚石这个问题。
这是VSCode的底部边缘,这是CMake扩展将其设置为构建选项的地方。

发布于 2022-04-28 07:35:36
不知何故,您设置了--target ExecutableName,这将构建限制为单个目标,即主可执行ExecutableName。尝试选择另一个目标,或让它未设置。
https://stackoverflow.com/questions/72039195
复制相似问题