⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmakelists.txt

📁 最新osg包
💻 TXT
字号:
# This file should only be included when using PthreadsINCLUDE (CheckFunctionExists)INCLUDE (CheckLibraryExists)INCLUDE (CheckSymbolExists)INCLUDE (CheckCXXSourceCompiles)SET(LIB_NAME OpenThreads)SET(LIB_PUBLIC_HEADERS ${OpenThreads_PUBLIC_HEADERS})ADD_LIBRARY(${LIB_NAME}    ${OPENTHREADS_USER_DEFINED_DYNAMIC_OR_STATIC}    ${LIB_PUBLIC_HEADERS}    PThread.c++    PThreadBarrier.c++    PThreadBarrierPrivateData.h    PThreadCondition.c++    PThreadConditionPrivateData.h    PThreadMutex.c++    PThreadMutexPrivateData.h    PThreadPrivateData.h    ../common/Version.cpp    ../common/Atomic.cpp)IF(OPENTHREADS_SONAMES)  SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES VERSION ${OPENTHREADS_VERSION} SOVERSION ${OPENTHREADS_SOVERSION})ENDIF(OPENTHREADS_SONAMES)SET(CMAKE_REQUIRED_LIBRARIES_SAFE "${CMAKE_REQUIRED_LIBRARIES}")SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})CHECK_FUNCTION_EXISTS(pthread_yield HAVE_PTHREAD_YIELD)IF(HAVE_PTHREAD_YIELD)  ADD_DEFINITIONS(-DHAVE_PTHREAD_YIELD)ELSE(HAVE_PTHREAD_YIELD)  # sched_yield appears not in libc, pthreads or whatever on some systems  CHECK_FUNCTION_EXISTS(sched_yield HAVE_SCHED_YIELD)  IF(NOT HAVE_SCHED_YIELD)    CHECK_LIBRARY_EXISTS(rt sched_yield "" HAVE_SCHED_YIELD)    IF(HAVE_SCHED_YIELD)      SET(CMAKE_THREAD_LIBS_INIT "${CMAKE_THREAD_LIBS_INIT} -lrt")    ENDIF(HAVE_SCHED_YIELD)  ENDIF(NOT HAVE_SCHED_YIELD)  IF(HAVE_SCHED_YIELD)    ADD_DEFINITIONS(-DHAVE_SCHED_YIELD)  ENDIF(HAVE_SCHED_YIELD)ENDIF(HAVE_PTHREAD_YIELD)IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")  # need to have that for pthread_setaffinity_np on linux  ADD_DEFINITIONS(-D_GNU_SOURCE)  SET(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_GNU_SOURCE")ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")CHECK_FUNCTION_EXISTS(pthread_setconcurrency HAVE_PTHREAD_SETCONCURRENCY)IF(HAVE_PTHREAD_SETCONCURRENCY)  ADD_DEFINITIONS(-DHAVE_PTHREAD_SETCONCURRENCY)ENDIF(HAVE_PTHREAD_SETCONCURRENCY)CHECK_FUNCTION_EXISTS(pthread_getconcurrency HAVE_PTHREAD_GETCONCURRENCY)IF(HAVE_PTHREAD_GETCONCURRENCY)  ADD_DEFINITIONS(-DHAVE_PTHREAD_GETCONCURRENCY)ENDIF(HAVE_PTHREAD_GETCONCURRENCY)CHECK_FUNCTION_EXISTS(pthread_setaffinity_np HAVE_PTHREAD_SETAFFINITY_NP)IF(HAVE_PTHREAD_SETAFFINITY_NP)  ADD_DEFINITIONS(-DHAVE_PTHREAD_SETAFFINITY_NP)ELSE(HAVE_PTHREAD_SETAFFINITY_NP)  CHECK_CXX_SOURCE_COMPILES("#include <sched.h>int main() {  cpu_set_t cpumask;  sched_setaffinity( 0, sizeof(cpumask), &cpumask );  return 0;}" HAVE_THREE_PARAM_SCHED_SETAFFINITY)  IF(HAVE_THREE_PARAM_SCHED_SETAFFINITY)    ADD_DEFINITIONS(-DHAVE_THREE_PARAM_SCHED_SETAFFINITY)  ELSE(HAVE_THREE_PARAM_SCHED_SETAFFINITY)    CHECK_CXX_SOURCE_COMPILES("#include <sched.h>int main() {  cpu_set_t cpumask;  sched_setaffinity( 0, &cpumask );  return 0;}" HAVE_TWO_PARAM_SCHED_SETAFFINITY)    IF(HAVE_TWO_PARAM_SCHED_SETAFFINITY)      ADD_DEFINITIONS(-DHAVE_TWO_PARAM_SCHED_SETAFFINITY)    ENDIF(HAVE_TWO_PARAM_SCHED_SETAFFINITY)  ENDIF(HAVE_THREE_PARAM_SCHED_SETAFFINITY)ENDIF(HAVE_PTHREAD_SETAFFINITY_NP)SET(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES_SAFE}")TARGET_LINK_LIBRARIES(${LIB_NAME}    ${CMAKE_THREAD_LIBS_INIT})# Since we're building different platforms binaries in # their respective directories, we need to set the # link directory so it can find this location.LINK_DIRECTORIES(    ${CMAKE_CURRENT_BINARY_DIR})INSTALL(    TARGETS OpenThreads    ARCHIVE DESTINATION lib${LIB_POSTFIX}    LIBRARY DESTINATION lib${LIB_POSTFIX}    RUNTIME DESTINATION bin)INSTALL(    FILES ${OpenThreads_PUBLIC_HEADERS}    DESTINATION include/OpenThreads)#commented out# INCLUDE(ModuleInstall OPTIONAL)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -