CMake add_executable() 无法使可执行文件和第 3 方库无法解压

CMake add_executable() failing to make executable and 3rd party library failing to untar

问题背景

我正在尝试将 UnitTest++ 合并到我基于 linux 的 C++17 项目模板中。我在 windows 上很容易做到这一点,但由于某种原因,我 运行 在 linux 上遇到了重大问题。

我在 Windows 上使用 Cmake 3.21,我 目前在 Linux.

上使用 CMake 3.17.5

我从 UnitTest++ Github 下载了 UnitTest++ 源代码。并继续将 tar.gz 放入我的 ProjectTemplate 中的 3rdParty 文件夹中。我在构建它时遇到了很大的麻烦。因此,除了我添加的第 3 方库和文件夹影响的内容之外,我已经删除了所有内容。所以此时所有的 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

更新

感谢 273K 指出了解决方案。我在 VSCode 中不小心将我的目标从“All”切换到了“ExecutableName”。我附上了问题区域的屏幕截图以及必须设置的内容,以避免未来可能使用 VSCode 并偶然发现此问题的用户出现此问题。

这是 VSCode 的底部边缘,这是 CMake 扩展放置构建选项的地方。

您以某种方式设置了 --target ExecutableName,将构建限制为单个目标,即主要可执行文件 ExecutableName。尝试 select 另一个目标,或者让它取消设置。