Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 链接库时为linux和windows设置条件_Cmake - Fatal编程技术网

Cmake 链接库时为linux和windows设置条件

Cmake 链接库时为linux和windows设置条件,cmake,Cmake,Windows 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_DIRECT

Windows 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上复制整个目录?如果您将所有的CMake构建文件都缓存在Windows构建中,那么可能(只是可能!)有什么东西潜入其中并在Linux上“检测”自己为WIN32

你确定是这一行而不是其他什么东西导致了到迷路赢库的链接吗?可能尝试在
IF(WIN32)
中的
消息(状态“我在这里”)
行以确保

您确定错误是由链接该库引起的吗?我可以在你的脚本中看到一个输入错误,它应该是
IF(CMAKE\u COMPILER\u IS\u GNUCXX)
-你有一个额外的X。也许你没有把自己和自己联系起来,这就是它失败的原因