set(PLUGIN_NAME quantum_computing)

list(APPEND HEADERS 
    QuantumCircuit.h
    BlochSphere.h
    QuantumState.h
    Qubit.h
    QuantumOperator.h
	QuantumCircuitReader.h
	QuantumSimulator.h
	circuit_elements/QuantumCircuitElement.h
	circuit_elements/QuantumWire.h
	circuit_elements/QuantumGate.h
	circuit_elements/QuantumTerminal.h
	circuit_elements/BasicQuantumGates.h
	visuals/BlochSphereNode.h
	visuals/QuantumCircuitNode.h
	visuals/QuantumCircuitElementNode.h
	visuals/QuantumGateNode.h
	visuals/QuantumWireNode.h
	visuals/QuantumTerminalNode.h
	visuals/QuantumStateNode.h
)

list(APPEND SOURCES 
    QuantumCircuit.cpp
    BlochSphere.cpp
    QuantumState.cpp
    Qubit.cpp
	QuantumOperator.cpp
	QuantumCircuitReader.cpp
	QuantumSimulator.cpp
    circuit_elements/QuantumGate.cpp
	circuit_elements/QuantumCircuitElement.cpp
	circuit_elements/QuantumWire.cpp	
	circuit_elements/QuantumTerminal.cpp
	circuit_elements/BasicQuantumGates.cpp
	visuals/BlochSphereNode.cpp
	visuals/QuantumCircuitNode.cpp
	visuals/QuantumCircuitElementNode.cpp
	visuals/QuantumGateNode.cpp
	visuals/QuantumWireNode.cpp
	visuals/QuantumTerminalNode.cpp
	visuals/QuantumStateNode.cpp
	visuals/BlochSphereNode.cpp
)
   
add_library(${PLUGIN_NAME} SHARED ${SOURCES} ${HEADERS})

target_include_directories(${PLUGIN_NAME} PUBLIC 
							${CMAKE_CURRENT_SOURCE_DIR}
							${CMAKE_CURRENT_SOURCE_DIR}/circuit_elements
							${CMAKE_CURRENT_SOURCE_DIR}/visuals
							)
target_link_libraries(${PLUGIN_NAME} PUBLIC core visual_elements ntk_math publishing)
set_property(TARGET ${PLUGIN_NAME} PROPERTY FOLDER plugins)
set_target_properties( ${PLUGIN_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON )  