mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| ################################################################################
 | |
| # Example C project
 | |
| ################################################################################
 | |
| # NOTE: Even though this is a C project, libz3 uses C++. When using libz3
 | |
| # as a static library if we don't configure this project to also support
 | |
| # C++ we will use the C linker rather than the C++ linker and will not link
 | |
| # the C++ standard library in resulting in a link failure.
 | |
| project(Z3_C_EXAMPLE C CXX)
 | |
| cmake_minimum_required(VERSION 2.8.12)
 | |
| find_package(Z3
 | |
|   REQUIRED
 | |
|   CONFIG
 | |
|   # `NO_DEFAULT_PATH` is set so that -DZ3_DIR has to be passed to find Z3.
 | |
|   # This should prevent us from accidently picking up an installed
 | |
|   # copy of Z3. This is here to benefit Z3's build sytem when building
 | |
|   # this project. When making your own project you probably shouldn't
 | |
|   # use this option.
 | |
|   NO_DEFAULT_PATH
 | |
| )
 | |
| message(STATUS "Z3_FOUND: ${Z3_FOUND}")
 | |
| message(STATUS "Found Z3 ${Z3_VERSION_STRING}")
 | |
| message(STATUS "Z3_DIR: ${Z3_DIR}")
 | |
| 
 | |
| add_executable(c_example test_capi.c)
 | |
| target_include_directories(c_example PRIVATE ${Z3_C_INCLUDE_DIRS})
 | |
| target_link_libraries(c_example PRIVATE ${Z3_LIBRARIES})
 | |
| 
 | |
| if ("${CMAKE_SYSTEM_NAME}" MATCHES "[Ww]indows")
 | |
|   # On Windows we need to copy the Z3 libraries
 | |
|   # into the same directory as the executable
 | |
|   # so that they can be found.
 | |
|   foreach (z3_lib ${Z3_LIBRARIES})
 | |
|     message(STATUS "Adding copy rule for ${z3_lib}")
 | |
|     add_custom_command(TARGET c_example
 | |
|       POST_BUILD
 | |
|       COMMAND
 | |
|         ${CMAKE_COMMAND} -E copy_if_different
 | |
|         $<TARGET_FILE:${z3_lib}>
 | |
|         $<TARGET_FILE_DIR:c_example>
 | |
|     )
 | |
|   endforeach()
 | |
| endif()
 |