diff --git a/CMakeLists.txt b/CMakeLists.txt
index 85b2603..6af11a7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -290,8 +290,7 @@
     "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/limited_reader.cc"
     "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/limited_reader.h"
     "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/mock_callback.h"
-    "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/parser_test.h"
-    "${LIBWEBM_SRC_DIR}/webm_parser/tests/webm_parser_tests.cc")
+    "${LIBWEBM_SRC_DIR}/webm_parser/test_utils/parser_test.h")
 
 set(webm_info_sources
     "${LIBWEBM_SRC_DIR}/common/indent.cc"
@@ -390,6 +389,9 @@
 
   if(LIBWEBM_DISABLE_GTEST_CMAKE)
     add_library(gtest STATIC "${GTEST_SRC_DIR}/googletest/src/gtest-all.cc")
+    add_library(gtest_main STATIC
+                "${GTEST_SRC_DIR}/googletest/src/gtest_main.cc")
+    target_link_libraries(gtest_main PUBLIC gtest)
     include_directories("${GTEST_SRC_DIR}/googletest")
   else()
     add_subdirectory("${GTEST_SRC_DIR}" "${GTEST_BUILD_DIR}")
@@ -397,27 +399,27 @@
   include_directories("${GTEST_SRC_DIR}/googletest/include")
 
   add_executable(mkvmuxer_tests ${mkvmuxer_tests_sources})
-  target_link_libraries(mkvmuxer_tests LINK_PUBLIC gtest webm)
+  target_link_libraries(mkvmuxer_tests LINK_PUBLIC gtest_main webm)
 
   add_executable(mkvparser_tests ${mkvparser_tests_sources})
-  target_link_libraries(mkvparser_tests LINK_PUBLIC gtest webm)
+  target_link_libraries(mkvparser_tests LINK_PUBLIC gtest_main webm)
 
   add_executable(vp9_header_parser_tests ${vp9_header_parser_tests_sources})
-  target_link_libraries(vp9_header_parser_tests LINK_PUBLIC gtest webm)
+  target_link_libraries(vp9_header_parser_tests LINK_PUBLIC gtest_main webm)
 
   add_executable(vp9_level_stats_tests ${vp9_level_stats_tests_sources})
-  target_link_libraries(vp9_level_stats_tests LINK_PUBLIC gtest webm)
+  target_link_libraries(vp9_level_stats_tests LINK_PUBLIC gtest_main webm)
 
   if(ENABLE_WEBMTS)
     add_executable(webm2pes_tests ${webm2pes_tests_sources}
                                   $<TARGET_OBJECTS:webmts>)
-    target_link_libraries(webm2pes_tests LINK_PUBLIC gtest webm)
+    target_link_libraries(webm2pes_tests LINK_PUBLIC gtest_main webm)
   endif()
 
   if(ENABLE_WEBM_PARSER)
     include_directories("${GTEST_SRC_DIR}/googlemock/include")
     add_executable(webm_parser_tests ${webm_parser_tests_sources})
-    target_link_libraries(webm_parser_tests LINK_PUBLIC gmock gtest webm)
+    target_link_libraries(webm_parser_tests LINK_PUBLIC gmock gtest_main webm)
   endif()
 endif()
 
diff --git a/common/vp9_header_parser_tests.cc b/common/vp9_header_parser_tests.cc
index d13bff2..fdd7878 100644
--- a/common/vp9_header_parser_tests.cc
+++ b/common/vp9_header_parser_tests.cc
@@ -174,8 +174,3 @@
 }
 
 }  // namespace
-
-int main(int argc, char* argv[]) {
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
diff --git a/common/vp9_level_stats_tests.cc b/common/vp9_level_stats_tests.cc
index a39cf37..09fc436 100644
--- a/common/vp9_level_stats_tests.cc
+++ b/common/vp9_level_stats_tests.cc
@@ -185,8 +185,3 @@
 }
 
 }  // namespace
-
-int main(int argc, char* argv[]) {
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
diff --git a/m2ts/tests/webm2pes_tests.cc b/m2ts/tests/webm2pes_tests.cc
index 664856f..4489ac5 100644
--- a/m2ts/tests/webm2pes_tests.cc
+++ b/m2ts/tests/webm2pes_tests.cc
@@ -151,8 +151,3 @@
 }
 
 }  // namespace
-
-int main(int argc, char* argv[]) {
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
diff --git a/testing/mkvmuxer_tests.cc b/testing/mkvmuxer_tests.cc
index 3374058..00fb45d 100644
--- a/testing/mkvmuxer_tests.cc
+++ b/testing/mkvmuxer_tests.cc
@@ -1003,8 +1003,3 @@
 }
 
 }  // namespace test
-
-int main(int argc, char* argv[]) {
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
diff --git a/testing/mkvparser_tests.cc b/testing/mkvparser_tests.cc
index fb61a8d..c366ccd 100644
--- a/testing/mkvparser_tests.cc
+++ b/testing/mkvparser_tests.cc
@@ -853,8 +853,3 @@
 }
 
 }  // namespace test
-
-int main(int argc, char* argv[]) {
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
diff --git a/webm_parser/tests/webm_parser_tests.cc b/webm_parser/tests/webm_parser_tests.cc
deleted file mode 100644
index 4011572..0000000
--- a/webm_parser/tests/webm_parser_tests.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2016 The WebM project authors. All Rights Reserved.
-//
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file in the root of the source
-// tree. An additional intellectual property rights grant can be found
-// in the file PATENTS.  All contributing project authors may
-// be found in the AUTHORS file in the root of the source tree.
-#include "gtest/gtest.h"
-
-int main(int argc, char* argv[]) {
-  ::testing::InitGoogleTest(&argc, argv);
-  return RUN_ALL_TESTS();
-}
\ No newline at end of file
