AIXCMakeTest没有添加正确的-lpthread

AIX CMakeTest does not add correct -lpthread

本文关键字:-lpthread 添加 AIXCMakeTest      更新时间:2023-10-16

我正在尝试使用CMake来编译我的项目。我依赖pthread库。

在我的CMakeFile上,我尝试了很多不同的选项

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lpthreads")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread -lpthreads")
set(CMAKE_THREAD_LIBS_INIT "-lpthreads")
find_package(Threads REQUIRED)

但在CheckSymbolExists步骤中,它没有添加-lpthread标志:

/usr/vacpp/bin/cc   -qthreaded -qalias=noansi -qhalt=e     CMakeFiles/cmTryCompileExec2302980897.dir/CheckSymbolExists.c.o  -o cmTryCompileExec2302980897 -Wl,-brtl,-bnoipath,-bexpall -Wl,-blibpath:
/opt/freeware/lib:/usr/lib:/lib 

我直接使用cc在一个分离的文件上进行了测试,-qthread不起作用,但-lpthread起作用。CMake是否有将-lpthread添加到CheckSymbolExists步骤的标志?

您必须使用target_link_libraries并将其应用于可执行文件。使用boost::threads:的项目的简单示例

include_directories(
  ${CMAKE_SOURCE_DIR}/src
)
include_directories( SYSTEM
  ${Boost_INCLUDE_DIRS}
)
link_directories(
  ${Boost_LIBRARY_DIRS}
)
add_executable( MyProgram
  ${CMAKE_SOURCE_DIR}/src/main.cpp
  ${CMAKE_SOURCE_DIR}/src/my_program.cpp
)
target_link_libraries( MyProgram
  ${Boost_LIBRARIES}
  pthread
)