lib에서 작업 중이며 gtest 프레임 워크를 기반으로하는 단위 테스트가 있습니다. unittests에 대한 설정은 입니다. 내가 코드 커버리지를 측정하기 위해 조금 다른 설정을하려고 할 때 그러나 컴파일이 오류와 함께 실패합니다C++ 컴파일 오류 : 'main'의 다중 정의이지만 프로젝트의 주요 기능은 1 개뿐입니다.
[ 10%] Linking CXX executable coverageRun.exe
CMakeFiles/coverageRun.dir/tests/src/main.cpp.o: In function `main':
/cygdrive/d/code/tests/src/main.cpp:24: multiple definition of `main'
CMakeFiles/coverageRun.dir/CMakeFiles/3.6.3/CompilerIdCXX/CMakeCXXCompilerId.cpp.o:/cygdrive/d/code/cmake-build-debug/CMakeFiles/3.6.3/CompilerIdCXX/CMakeCXXCompilerId.cpp:514: first defined here
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/coverageRun.dir/build.make:1215: coverageRun.exe] Error 1
make[2]: *** [CMakeFiles/Makefile2:101: CMakeFiles/coverageRun.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:113: CMakeFiles/coverageRun.dir/rule] Error 2
make: *** [Makefile:175: coverageRun] Error 2
이 내 main.cpp
파일과 같은 모습입니다 :
#include <iostream>
#include <gtest/gtest.h>
#include "helpers/helper.h"
#include "helpers/pathHelper.h"
namespace code{
bool isPreconditionsOK(){
auto testRoot = helper::readEnvVar(helper::path::TEST_ROOT);
bool result = true;
if(testRoot.empty()){
std::cerr << "Env. variable " << helper::path::TEST_ROOT
<< " should be set before test start." << std::endl;
result = false;
}
return result;
}
}
int main(int argc, char **argv) {
if(code::isPreconditionsOK()){
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
};
}
그래서 내가 무엇을 시도 할 수 이 문제를 해결하려면?
같이 "CmakeCxxCompilerId.cpp은"보는 방법이 있습니다 : link
이 http://stackoverflow.com/questions/22176957/cmake-finds-more-than-one-main-function/22177285의 중복 것 같다 – Argenet
나는 CMakeCXXCompilerId.cpp에서 살펴 것 : 514 – Jonas
를 @ Jonas에 https://repl.it/FBoX 링크가 있습니다 –