mirror of
https://github.com/Z3Prover/z3
synced 2025-11-23 14:11:28 +00:00
Add Z3_parser_context examples for C and C++
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
parent
52b7df22cb
commit
d9499fb00b
7 changed files with 733 additions and 0 deletions
47
examples/cpp_parser_context/CMakeLists.txt
Normal file
47
examples/cpp_parser_context/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
################################################################################
|
||||
# Example C++ parser context project
|
||||
################################################################################
|
||||
project(Z3_CPP_PARSER_CONTEXT_EXAMPLE CXX)
|
||||
cmake_minimum_required(VERSION 3.4)
|
||||
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 accidentally picking up an installed
|
||||
# copy of Z3. This is here to benefit Z3's build system when building
|
||||
# this project. When making your own project you probably shouldn't
|
||||
# use this option.
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
################################################################################
|
||||
# Z3 C++ API bindings require C++11
|
||||
################################################################################
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
message(STATUS "Z3_FOUND: ${Z3_FOUND}")
|
||||
message(STATUS "Found Z3 ${Z3_VERSION_STRING}")
|
||||
message(STATUS "Z3_DIR: ${Z3_DIR}")
|
||||
|
||||
add_executable(cpp_parser_context_example cpp_parser_context_example.cpp)
|
||||
target_include_directories(cpp_parser_context_example PRIVATE ${Z3_CXX_INCLUDE_DIRS})
|
||||
target_link_libraries(cpp_parser_context_example PRIVATE ${Z3_LIBRARIES})
|
||||
|
||||
target_compile_options(cpp_parser_context_example PRIVATE ${Z3_COMPONENT_CXX_FLAGS})
|
||||
|
||||
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 cpp_parser_context_example
|
||||
POST_BUILD
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy_if_different
|
||||
$<TARGET_FILE:${z3_lib}>
|
||||
$<TARGET_FILE_DIR:cpp_parser_context_example>
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
Loading…
Add table
Add a link
Reference in a new issue