Selaa lähdekoodia

Add test for object library dependencies

Issue: #16615
Gregor Jasny 8 vuotta sitten
vanhempi
sitoutus
624021a09e

+ 11 - 0
Tests/RunCMake/ObjectLibrary/Dependencies.cmake

@@ -0,0 +1,11 @@
+cmake_minimum_required(VERSION 3.7)
+
+project(Dependencies)
+
+add_library(myobj OBJECT ${CMAKE_BINARY_DIR}/depends_obj.cpp)
+add_library(mylib STATIC $<TARGET_OBJECTS:myobj> depends_lib.cpp)
+add_executable(myexe depends_main.cpp)
+target_link_libraries(myexe mylib)
+
+enable_testing()
+add_test(NAME myexe COMMAND $<TARGET_FILE:myexe>)

+ 19 - 0
Tests/RunCMake/ObjectLibrary/RunCMakeTest.cmake

@@ -16,3 +16,22 @@ run_cmake(ObjWithObj)
 run_cmake(PostBuild)
 run_cmake(PreBuild)
 run_cmake(PreLink)
+
+function(run_Dependencies)
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Dependencies-build)
+  set(RunCMake_TEST_NO_CLEAN 1)
+
+  file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
+  file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
+
+  run_cmake_command(Dependencies-build ${CMAKE_COMMAND} -E copy ${RunCMake_SOURCE_DIR}/depends_obj1.cpp ${RunCMake_TEST_BINARY_DIR}/depends_obj.cpp)
+  run_cmake(Dependencies)
+  run_cmake_command(Dependencies-build ${CMAKE_COMMAND} --build .)
+  run_cmake_command(Dependencies-build ${CMAKE_COMMAND} -E copy ${RunCMake_SOURCE_DIR}/depends_obj0.cpp ${RunCMake_TEST_BINARY_DIR}/depends_obj.cpp)
+  run_cmake_command(Dependencies-build ${CMAKE_COMMAND} -E sleep 1)
+  run_cmake_command(Dependencies-build ${CMAKE_COMMAND} -E touch_nocreate ${RunCMake_TEST_BINARY_DIR}/depends_obj.cpp)
+  run_cmake_command(Dependencies-build ${CMAKE_COMMAND} --build .)
+  run_cmake_command(Dependencies-build ${CMAKE_CTEST_COMMAND} -C Debug)
+endfunction()
+
+run_Dependencies()

+ 7 - 0
Tests/RunCMake/ObjectLibrary/depends_lib.cpp

@@ -0,0 +1,7 @@
+#include <stdlib.h>
+int myobj_foo();
+
+void mylib_foo()
+{
+  exit(myobj_foo());
+}

+ 7 - 0
Tests/RunCMake/ObjectLibrary/depends_main.cpp

@@ -0,0 +1,7 @@
+void mylib_foo();
+
+int main()
+{
+  mylib_foo();
+  return 0;
+}

+ 4 - 0
Tests/RunCMake/ObjectLibrary/depends_obj0.cpp

@@ -0,0 +1,4 @@
+int myobj_foo()
+{
+  return 0;
+}

+ 4 - 0
Tests/RunCMake/ObjectLibrary/depends_obj1.cpp

@@ -0,0 +1,4 @@
+int myobj_foo()
+{
+  return 1;
+}