首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake add_executable()未能生成可执行文件,第三方库未能解压缩

CMake add_executable()未能生成可执行文件,第三方库未能解压缩
EN

Stack Overflow用户
提问于 2022-04-28 06:48:06
回答 1查看 192关注 0票数 0

问题背景

我正在尝试将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++第三方库无法取消to,没有错误输出。

我已经包括了构建输出。

为什么testExecutable没有被制造出来?更重要的是,为什么我的UnitTest++不能打开?

目录结构

代码语言:javascript
复制
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生成/配置的输出

代码语言:javascript
复制
[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

生成输出

代码语言:javascript
复制
[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扩展将其设置为构建选项的地方。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-28 07:35:36

不知何故,您设置了--target ExecutableName,这将构建限制为单个目标,即主可执行ExecutableName。尝试选择另一个目标,或让它未设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72039195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档