【发布时间】:2018-03-26 21:51:47
【问题描述】:
我在 clion 中有以下项目结构:
├── CMakeLists.txt
├── src
│ ├── func1.c
│ ├── func1.h
│ └── main.c
└── test
└── unit
└── test_func1.c
CMakeLists.txt 在哪里:
cmake_minimum_required(VERSION 3.5)
project(untitled)
set(CMAKE_C_STANDARD 11)
find_library(CMOCKA_LIBRARY libcmocka.so)
# application binary
set(SOURCE_FILES src/main.c src/func1.c src/func1.h)
add_executable(untitled ${SOURCE_FILES})
# test binary
include_directories("${CMAKE_SOURCE_DIR}/src")
set(TEST_SOURCE_FILES src/func1.c src/func1.h test/unit/test_func1.c)
add_executable(unit_tests ${TEST_SOURCE_FILES})
target_link_libraries(unit_tests ${CMOCKA_LIBRARY})
main.c:
#include <stdio.h>
#include "func1.h"
int main() {
printf("Hello, World!\n");
print_hello();
return 0;
}
test_func1.c:
#include <stdlib.h>
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
#include "func1.h"
static void test_func1(void **state){
int ret = print_hello();
assert_true(ret == 0);
}
int main(int argc, char **argv){
const UnitTest tests[] = {
unit_test(test_func1),
};
return run_tests(tests);
}
func1.c:
#include <stdio.h>
#include "func1.h"
int print_hello(){
printf("hello");
return 0;
}
func1.h:
#ifndef UNTITLED_FUNC1_H
#define UNTITLED_FUNC1_H
int print_hello();
#endif //UNTITLED_FUNC1_H
当我从 clion 中构建应用程序时,它只构建未命名的 应用程序二进制文件,它不构建测试二进制文件。为了建立 测试,我必须创建一个构建目录并手动调用 cmake 和 make。
我想:
- 让 clion 在“构建”上构建应用程序二进制文件和测试二进制文件
- 只有在测试通过时才构建应用程序二进制文件
- 在这种情况下管理单元测试的更好方法是什么
【问题讨论】:
标签: c cmake clion directory-structure