##------------REQUIRED_4 指定C++标准------------# ## !!!不要在库中使用此方式!!!,使用set_target_properties/set_property来针对目标设置标准 ## 设置缓存变量: 设置了 C++ 标准的级别为 17(STRING) ,保存在CMakeCache.txt文件中,此处“”内容会写入为注释 #set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use") ## 告诉 CMake 使用上述设置 #set(CMAKE_CXX_STANDARD_REQUIRED ON) ## 关闭了拓展,来明确自己使用了 -std=c++11 还是 -std=g++11 #set(CMAKE_CXX_EXTENSIONS OFF) #set_target_properties() aux_source_directory(${CMAKE_SOURCE_DIR}/lib/src SRC_FILES_IN_LIB) message(STATUS "SRC_FILES_IN_LIB: ${SRC_FILES_IN_LIB}") add_library(WireRoutingLib SHARED ${SRC_FILES_IN_LIB}) if (APPLE) set_target_properties( WireRoutingLib PROPERTIES OUTPUT_NAME "WireRoutingLib" PREFIX "" CXX_STANDARD 17 CXX_STANDARD_REQUIRED ON CXX_EXTENSIONS OFF ) get_target_property(CXX_STD_VER WireRoutingLib CXX_STANDARD) message(STATUS "C++ version using: " ${CXX_STD_VER}) add_custom_command( TARGET WireRoutingLib POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/build/lib/WireRoutingLib.dylib ${CMAKE_SOURCE_DIR}/lib ) elseif (WIN32) target_compile_definitions(WireRoutingLib PUBLIC DMY_LIB_SHARED_BUILD) target_compile_definitions(WireRoutingLib PRIVATE WireRoutingLibDLL_EXPORTS) INSTALL(TARGETS WireRoutingLib DESTINATION ${CMAKE_SOURCE_DIR}/lib) SET_TARGET_PROPERTIES( WireRoutingLib PROPERTIES LINKER_LANGUAGE C ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/build LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib OUTPUT_NAME "WireRoutingLib" PREFIX "" ) endif() target_include_directories( WireRoutingLib PUBLIC ${CMAKE_SOURCE_DIR}/lib/include )