来自gui

时间:2016-09-26 13:45:45

标签: c++ ubuntu netbeans cmake googletest

所以我在ubuntu 14.04上运行NetBeans 8.1。我有一个使用CMakeLists文件和googletest的现有项目。我正在尝试设置它并运行。所以我安装了NBCndUnit,然后按照此处的说明进行操作:https://github.com/offa/NBCndUnit/wiki/Using-existing-projects#a-workaround-for-cmake。 这是我的项目/ CMakeLists文件的一部分:

cmake_policy(SET CMP0037 OLD)
add_custom_target(build-tests COMMENT "starting build-tests target" )
add_custom_target(test myAppTest COMMENT "starting test target")

这是我的myApp / test CMakeLists文件的一部分:

add_executable(myAppTest ${SOURCES} ${HEADERS})

target_link_libraries(myAppTest 
    -L${GTEST_LIBRARY_DIR} 
    -L${GMOCK_LIBRARY_DIR}
    myApp
    gtest
    gmock
    # other dependencies
)

add_test(myAppTest myAppTest )

当我右键单击主项目CMakeLists.txt文件并选择"生成makefile" - 它成功了。当我右键单击Makefile并转到Make Target子菜单时,我可以选择几个目标:

  • 所有
  • 清洁
  • 帮助
  • 构建的测试
  • 测试

当我选择例如。 "建立的测试"目标 - 没有任何反应(预期,因为此目标为空):

cd '(some project path)/cmake_build'
/usr/bin/make  -f Makefile build-tests
Built target build-tests

如果我选择"测试" target - 它构建并执行(在控制台窗口中输出)

cd '(path to project)/cmake_build'
/usr/bin/make  -f Makefile test
[ 34%] Built target dependency1
[ 54%] Built target dependency2
[ 82%] Built target dependency3
[ 88%] Built target dependency4
[ 97%] Built target dependency5
[100%] starting test target
[==========] Running 111 tests from 7 test cases.
[----------] Global test environment set-up.
[----------] 1 test from Foo
[ RUN      ] Foo.Bar
[       OK ] Foo.Bar (0 ms)
[----------] 1 test from Foo (0 ms total)
(rest of gtest output)

但我想在Netbeans TestResults窗口窗格中看到测试结果。所以我去了' Run' - >'测试项目'菜单中的命令。此处出现问题:“输出”窗格中添加了一个新选项卡,标题为myApp(Build,Build Tests ...)。它试图建立整个项目:

cd '(project path)/cmake_build'
/usr/bin/make -j4 -f Makefile

问题是,由于依赖性,整个项目尚不可构建。所有必要的都是在myAppTest中进行模拟(并且测试本身是可运行的 - 例如,通过构建" test"来自makefile上下文菜单的目标)。所以真正的问题是: 在构建和运行实际测试之前,我可以以某种方式跳过构建整个项目吗?

2 个答案:

答案 0 :(得分:1)

  

在构建和运行实际测试之前,我可以以某种方式跳过构建整个项目吗?

Netbeans默认构建all个目标。我想这是某种方式的整合。有人认为你可以尝试从这个默认目标中排除对象/目标。

另一种方法:添加一个选项(例如BUILD_TESTS_ONLY),它只构建运行测试所需的部分。默认情况下,此选项可以关闭,因此它不会破坏任何其他构建。

答案 1 :(得分:1)

好吧,我部分能够解决我的问题。我做了什么,是添加自定义项目属性配置方案: enter image description here

我只是添加了一些假的构建目标(build_tests),因此NB构建它而不是默认的all目标。有点hacky,但做我需要的。