【问题标题】:Build VS 2015 solution with [CMake / Command Line]使用 [CMake / 命令行] 构建 VS 2015 解决方案
【发布时间】:2016-01-09 05:26:10
【问题描述】:

到目前为止,这是我启动 Cmake 构建的命令行:

cmake .. --build .. -DCMAKE_BUILD_TYPE:STRING=release

这很好并且有效,它会生成一个

Project.sln

和

tests/ProjectTests.sln

解决方案文件。

我可以使用 Visual Studio 打开解决方案文件并构建它们并从 Visual Studio 运行测试,但是 我正在从 Continuos 集成服务器运行脚本,因此我还需要启动构建并从命令行运行测试:我该怎么做?


我需要

  1. 构建库 (Project.sln)
  2. 构建测试可执行文件 (tests/ProjectTests.sln)
  3. 运行测试(从 Tests.exe 所在的同一文件夹中调用 CTest)

直到现在我都尝试使用命令构建

msbuild Infectorpp2.sln

但那是失败的(error log 只是发布时间太长),如果这可以帮助这里是 github 上的script。主要问题是我无法最终生成Tests.exe 文件,一旦完成调用 CTest 就很简单了。提前致谢。

【问题讨论】:

    标签: msbuild cmake visual-studio-2015 appveyor


    【解决方案1】:

    如the documentation 中所述,使用CMake构建 目标(即在生成 带有cmake -G 的.sln 文件之后)的一般语法是:

    cmake --build . [--config <config>] [--target <target>] [-- -i]
    

    它将为您调用适当的编译器/工具链命令。

    有关cmake 命令接受的参数的完整列表,请参阅cmake(1)。

    【讨论】:

    • 当我添加“config”或“target”选项时,cmake 坚持说他在“build/ALL_BUILD”文件夹或“build/Release”中找不到源目录文件夹。我认为只有 --build 命令有问题。我已经尝试过文档的那部分但没有成功
    • 我注意到你使用了..(即父目录),但我认为它应该是cmake --build .(即当前目录,即生成 cmake 文件是)。
    • 谢谢,现在我可以构建库了,但仍然没有生成测试可执行文件:/
    • 这与CMake & CTest : make test doesn't build tests提出的问题有关吗?
    • 我做--build . --target ALL_BUILD 应该相当于make all 也可以构建测试文件,无论如何我现在会尝试解决这个问题,以防万一它工作它肯定是一个 Cmake 错误。谢谢
    【解决方案2】:

    为随机浏览器补齐资料,问题最终出在函数签名错误。

    CMake 测试驱动需要这样的签名:

    int filename(int, char*[])
    

    GCC/Clang 接受这个签名

    int filename(int, char**)
    

    Visual Studio 需要

    int filename(int char**const) //still works with GCC/Clang luckily
    

    【讨论】:

      猜你喜欢
      • 2010-09-21
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 2016-09-24
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      相关资源
      最近更新 更多