11cmake_minimum_required (VERSION 3.16 )
22project (robotcpp VERSION 0.1.0 LANGUAGES C CXX )
33
4- option (ROBOT_CPP_BUILD_ROBOT_SERVER "Build model-cli, model-server, and robot client targets" ON )
4+ option (ROBOT_CPP_BUILD_ROBOT_SERVER "Build model-cli and model-server targets" ON )
5+ option (ROBOT_CPP_BUILD_ROBOT_CLIENT "Build C++ robot client targets" OFF )
56
67set (CMAKE_CXX_STANDARD 17)
78set (CMAKE_CXX_STANDARD_REQUIRED ON )
@@ -107,7 +108,7 @@ target_include_directories(robotcpp
107108target_link_libraries (robotcpp PUBLIC smolvla_runtime pi0_engine )
108109target_compile_features (robotcpp PUBLIC cxx_std_17 )
109110
110- if (ROBOT_CPP_BUILD_ROBOT_SERVER)
111+ if (ROBOT_CPP_BUILD_ROBOT_SERVER OR ROBOT_CPP_BUILD_ROBOT_CLIENT )
111112 add_library (robot_server_common STATIC
112113 ${ROBOT_SERVER_DIR} /protocol.cpp
113114 ${ROBOT_SERVER_DIR} /protocol.h
@@ -119,7 +120,27 @@ if(ROBOT_CPP_BUILD_ROBOT_SERVER)
119120 if (WIN32 )
120121 target_link_libraries (robot_server_common PUBLIC ws2_32 )
121122 endif ()
123+ endif ()
124+
125+ if (ROBOT_CPP_BUILD_ROBOT_CLIENT)
126+ add_library (model_client_cpp STATIC
127+ ${ROBOT_CLIENT_DIR} /cpp/model_client.cpp
128+ ${ROBOT_CLIENT_DIR} /cpp/model_client.h
129+ )
130+ target_include_directories (model_client_cpp PUBLIC
131+ ${ROBOT_CLIENT_DIR}
132+ ${ROBOT_SERVER_DIR}
133+ )
134+ target_link_libraries (model_client_cpp PUBLIC robot_server_common )
135+ target_compile_features (model_client_cpp PUBLIC cxx_std_17 )
136+
137+ add_executable (model-cpp-client-example ${ROBOT_CLIENT_DIR} /examples/cpp/minimal_example.cpp )
138+ set_target_properties (model-cpp-client-example PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR } /bin)
139+ target_link_libraries (model-cpp-client-example PRIVATE model_client_cpp )
140+ target_compile_features (model-cpp-client-example PRIVATE cxx_std_17 )
141+ endif ()
122142
143+ if (ROBOT_CPP_BUILD_ROBOT_SERVER)
123144 add_library (robot_server_core STATIC
124145 ${ROBOT_SERVER_DIR} /session.cpp
125146 ${ROBOT_SERVER_DIR} /session.h
@@ -134,17 +155,6 @@ if(ROBOT_CPP_BUILD_ROBOT_SERVER)
134155 target_link_libraries (robot_server_core PUBLIC robot_server_common robotcpp )
135156 target_compile_features (robot_server_core PUBLIC cxx_std_17 )
136157
137- add_library (model_client_cpp STATIC
138- ${ROBOT_CLIENT_DIR} /cpp/model_client.cpp
139- ${ROBOT_CLIENT_DIR} /cpp/model_client.h
140- )
141- target_include_directories (model_client_cpp PUBLIC
142- ${ROBOT_CLIENT_DIR}
143- ${ROBOT_SERVER_DIR}
144- )
145- target_link_libraries (model_client_cpp PUBLIC robot_server_common )
146- target_compile_features (model_client_cpp PUBLIC cxx_std_17 )
147-
148158 add_executable (model-cli src/model-cli.cpp )
149159 set_target_properties (model-cli PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR } /bin)
150160 target_include_directories (model-cli PRIVATE
@@ -164,11 +174,6 @@ if(ROBOT_CPP_BUILD_ROBOT_SERVER)
164174 target_link_libraries (model-server PRIVATE robot_server_core robotcpp )
165175 target_compile_features (model-server PRIVATE cxx_std_17 )
166176
167- add_executable (model-cpp-client-example ${ROBOT_CLIENT_DIR} /examples/cpp/minimal_example.cpp )
168- set_target_properties (model-cpp-client-example PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR } /bin)
169- target_link_libraries (model-cpp-client-example PRIVATE model_client_cpp )
170- target_compile_features (model-cpp-client-example PRIVATE cxx_std_17 )
171-
172177 add_executable (smolvla-raw-predict ${ROBOT_SERVER_DIR} /test/smolvla_raw_predict.cpp )
173178 set_target_properties (smolvla-raw-predict PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR } /bin)
174179 target_include_directories (smolvla-raw-predict PRIVATE ${CMAKE_CURRENT_SOURCE_DIR } /src ${SMOLVLA_DIR} )
0 commit comments