diff --git a/tester/CMakeLists.txt b/tester/CMakeLists.txt
index 8595327462e1b787ac0a618bd1c08b84ecab37e9..68bceeb5fdfc04e2accf4f30e5bf09214f669df8 100644
--- a/tester/CMakeLists.txt
+++ b/tester/CMakeLists.txt
@@ -25,10 +25,52 @@ if(WIN32)
 endif()
 find_package(GTK2 2.18 COMPONENTS gtk)
 
-file (GLOB_RECURSE SOURCE_FILES *.c)
+set(SOURCE_FILES
+	accountmanager.c
+	call_tester.c
+	dtmf_tester.c
+	eventapi_tester.c
+	flexisip_tester.c
+	liblinphone_tester.c
+	log_collection_tester.c
+	message_tester.c
+	multi_call_tester.c
+	multicast_call_tester.c
+	offeranswer_tester.c
+	player_tester.c
+	presence_tester.c
+	proxy_config_tester.c
+	quality_reporting_tester.c
+	register_tester.c
+	remote_provisioning_tester.c
+	setup_tester.c
+	stun_tester.c
+	tester.c
+	tunnel_tester.c
+	upnp_tester.c
+	video_tester.c
+)
 
 add_definitions(-DBC_CONFIG_FILE="config.h")
 
+if(IOS)
+
+add_library(linphonetester STATIC ${SOURCE_FILES})
+target_include_directories(linphonetester PUBLIC ${CUNIT_INCLUDE_DIRS} PRIVATE common)
+target_link_libraries(linphonetester linphone ${CUNIT_LIBRARIES})
+install(TARGETS linphonetester
+	RUNTIME DESTINATION bin
+	LIBRARY DESTINATION lib
+	ARCHIVE DESTINATION lib
+	PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+)
+install(FILES "liblinphone_tester.h" "common/bc_tester_utils.h"
+	DESTINATION include/linphone
+	PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
+)
+
+else()
+
 add_executable(liblinphone_tester ${SOURCE_FILES})
 set_target_properties(liblinphone_tester PROPERTIES LINKER_LANGUAGE CXX)
 target_include_directories(liblinphone_tester PUBLIC ${CUNIT_INCLUDE_DIRS} PRIVATE common)
@@ -38,3 +80,6 @@ if (GTK2_FOUND)
 	target_include_directories(liblinphone_tester PUBLIC ${GTK2_INCLUDE_DIRS})
 	target_link_libraries(liblinphone_tester linphone ${GTK2_LIBRARIES})
 endif()
+
+endif()
+