diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e88a8a..b56152d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,10 +16,14 @@ cmake_minimum_required(VERSION 2.8.12) project(CSerialPort LANGUAGES CXX) # set output directory -if (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) - set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() +if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +endif() +if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) endif() # set build tpye diff --git a/bindings/c/CMakeLists.txt b/bindings/c/CMakeLists.txt index 753f963..da9c202 100644 --- a/bindings/c/CMakeLists.txt +++ b/bindings/c/CMakeLists.txt @@ -19,22 +19,42 @@ add_definitions(-DCSERIALPORT_DEBUG) # CSerialPort Debug Mode add_definitions(-DCSERIALPORT_BINDING_LANGUAGE=C) # CSerialPort Binding Language # set output directory -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +if(NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() +if(NOT CMAKE_LIBRARY_OUTPUT_DIRECTORY) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +endif() +if(NOT CMAKE_ARCHIVE_OUTPUT_DIRECTORY) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif() # cserialport files set(CSerialPortRootPath "${CMAKE_CURRENT_SOURCE_DIR}/../..") -include_directories(${CSerialPortRootPath}/include) -list(APPEND CSerialPortSourceFiles ${CSerialPortRootPath}/src/SerialPort.cpp ${CSerialPortRootPath}/src/SerialPortBase.cpp ${CSerialPortRootPath}/src/SerialPortInfo.cpp ${CSerialPortRootPath}/src/SerialPortInfoBase.cpp) +list(APPEND CSerialPortSourceFiles + ${CSerialPortRootPath}/src/SerialPort.cpp + ${CSerialPortRootPath}/src/SerialPortBase.cpp + ${CSerialPortRootPath}/src/SerialPortInfo.cpp + ${CSerialPortRootPath}/src/SerialPortInfoBase.cpp +) if (WIN32) - list(APPEND CSerialPortSourceFiles ${CSerialPortRootPath}/src/SerialPortInfoWinBase.cpp ${CSerialPortRootPath}/src/SerialPortWinBase.cpp) - list(APPEND CSerialPortSourceFiles ${CSerialPortRootPath}/lib/version.rc) + list(APPEND CSerialPortSourceFiles + ${CSerialPortRootPath}/src/SerialPortInfoWinBase.cpp + ${CSerialPortRootPath}/src/SerialPortWinBase.cpp + ) + list(APPEND CSerialPortSourceFiles + ${CSerialPortRootPath}/lib/version.rc + ) elseif (UNIX) - list(APPEND CSerialPortSourceFiles ${CSerialPortRootPath}/src/SerialPortInfoUnixBase.cpp ${CSerialPortRootPath}/src/SerialPortUnixBase.cpp) + list(APPEND CSerialPortSourceFiles + ${CSerialPortRootPath}/src/SerialPortInfoUnixBase.cpp + ${CSerialPortRootPath}/src/SerialPortUnixBase.cpp + ) endif () add_library(${PROJECT_NAME} SHARED cserialport.cpp ${CSerialPortSourceFiles}) +target_include_directories(cserialport PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(cserialport PRIVATE ${CSerialPortRootPath}/include) if (WIN32) target_link_libraries(${PROJECT_NAME} user32 advapi32 setupapi) @@ -44,7 +64,12 @@ elseif (APPLE) target_link_libraries(${PROJECT_NAME} ${FOUNDATION_LIBRARY} ${IOKIT_LIBRARY}) elseif (UNIX) target_link_libraries(${PROJECT_NAME} pthread) + if(CMAKE_COMPILER_IS_GNUCC) + target_link_libraries(${PROJECT_NAME} rt) + endif() endif () # example -add_subdirectory(example) \ No newline at end of file +if (CSERIALPORT_BUILD_EXAMPLES) + add_subdirectory(example) +endif () diff --git a/bindings/c/cserialport.cpp b/bindings/c/cserialport.cpp index 3ce249a..c5d32ba 100644 --- a/bindings/c/cserialport.cpp +++ b/bindings/c/cserialport.cpp @@ -68,7 +68,7 @@ void CSerialPortAvailablePortInfosMalloc(SerialPortInfoArray *portInfoArray) } else { - portInfoArray->portInfo = NULL; + portInfoArray->portInfo = nullptr; } } @@ -77,12 +77,12 @@ void CSerialPortAvailablePortInfosFree(struct SerialPortInfoArray *portInfoArray if (portInfoArray) { delete[] portInfoArray->portInfo; - portInfoArray->portInfo = NULL; + portInfoArray->portInfo = nullptr; portInfoArray->size = 0; } } -i_handle_t CSerialPortMalloc() +i_handle_t CSerialPortMalloc(void) { return reinterpret_cast(new itas109::CSerialPort()); } @@ -93,7 +93,7 @@ void CSerialPortFree(i_handle_t handle) if (pCSP) { delete pCSP; - pCSP = NULL; + pCSP = nullptr; } } diff --git a/bindings/c/cserialport.h b/bindings/c/cserialport.h index 6ada791..37f86e0 100644 --- a/bindings/c/cserialport.h +++ b/bindings/c/cserialport.h @@ -81,7 +81,7 @@ extern "C" C_DLL_EXPORT void CSerialPortAvailablePortInfosFree(struct SerialPortInfoArray *portInfoArray); - C_DLL_EXPORT i_handle_t CSerialPortMalloc(); + C_DLL_EXPORT i_handle_t CSerialPortMalloc(void); C_DLL_EXPORT void CSerialPortFree(i_handle_t handle);