gpt4 book ai didi

cmake - 链接库时为linux和windows创造条件

转载 作者:行者123 更新时间:2023-12-04 12:25:23 31 4
gpt4 key购买 nike

视窗 VC++ 2008
linux gcc 4.4.3

我有以下问题。当我在 Windows 上编译时,我需要 ws2_32 库。但是,当我在 linux 上编译时,我不需要链接它。

我的 CMakeLists.txt

INCLUDE_DIRECTORIES($CLIENT_SERVER_SOURCE_DIR/client)
INCLUDE_DIRECTORIES($CLIENT_SERVER_SOURCE_DIR/cltsvr_ults)

# Link the library
LINK_DIRECTORIES($CLIENT_SERVER_DIR/client)

# Add the executable
ADD_EXECUTABLE(clt test_clt)

# Link the executable to the client library
IF(WIN32)
TARGET_LINK_LIBRARIES(clt client ws2_32)
ENDIF(WIN32)

IF(CMAKE_COMPILER_IS_GNUCXXX)
TARGET_LINK_LIBRARIES(clt client)
ENDIF(CMAKE_COMPILER_IS_GNUCXXX)

我试过在linux下编译没有成功。使用上述条件。但是,它总是尝试链接 ws2_32 并且我收到编译错误。我认为条件不起作用,因为它总是通过 WIN32 条件。

非常感谢您的任何建议,

最佳答案

WIN32事情是 CMake 的一个基本部分,我想这比你提到的要多。

您是对代码进行彻底检查,还是只是在 Linux 上复制整个目录?如果您从 Windows 构建中缓存了所有 CMake 构建文件,也许(只是可能!)有什么东西潜入其中并在 Linux 上“检测”为 WIN32?

您确定是那条线而不是其他导致链接到流浪 Win-library 的东西吗?也许试试 MESSAGE(STATUS "I am here")线内IF(WIN32)只想确认一下。

您确定错误是由链接该库引起的吗?我可以看到你的脚本中有一个错字,应该是 IF(CMAKE_COMPILER_IS_GNUCXX) - 你有一个额外的 X 在那里。或许你并没有将你所是的东西联系起来,这就是它失败的原因。

关于cmake - 链接库时为linux和windows创造条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779832/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com