Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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
C++ CMake与cygwin“一起制作”;make[2]:***没有规则使目标';cygwin'&引用;_C++_Gcc_Makefile_Cmake_Cygwin - Fatal编程技术网

C++ CMake与cygwin“一起制作”;make[2]:***没有规则使目标';cygwin'&引用;

C++ CMake与cygwin“一起制作”;make[2]:***没有规则使目标';cygwin'&引用;,c++,gcc,makefile,cmake,cygwin,C++,Gcc,Makefile,Cmake,Cygwin,我在尝试在Windows上使用cmake在cygwin中编译一个项目时,遇到了这个完全不支持google的错误 有问题的CMakeLists.txt文件是: # Minimum cmake version (required) cmake_minimum_required( VERSION 2.8.4 ) # Project name project( sdlinterface ) # Find SDL2 include( FindPkgConfig ) pkg_search_module(

我在尝试在Windows上使用cmake在cygwin中编译一个项目时,遇到了这个完全不支持google的错误

有问题的CMakeLists.txt文件是:

# Minimum cmake version (required)
cmake_minimum_required( VERSION 2.8.4 )

# Project name
project( sdlinterface )

# Find SDL2
include( FindPkgConfig )
pkg_search_module( SDL2 REQUIRED sdl2 )

set (PROJECT_INCLUDE_DIR 
    ${SDL2_INCLUDE_DIRS}    # SDL headers
    ${PROJECT_SOURCE_DIR}/include
)   

set (PROJECT_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)

set(PROJECT_SRCS 
    ${PROJECT_SOURCE_DIR}/SDLMain.cpp
    ${PROJECT_SOURCE_DIR}/SDLWindow.cpp
    ${PROJECT_SOURCE_DIR}/SDLEventLoop.cpp
)

# Set the compiler flags (specifically the c++11 one)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

include_directories("${PROJECT_BINARY_DIR}")
include_directories("${PROJECT_INCLUDE_DIR}")

add_library(${PROJECT_NAME} SHARED ${PROJECT_SRCS})
set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)

# Link project with SDL
target_link_libraries(${PROJECT_NAME} 
    SDL2
)
知道为什么我调用make时它试图编译一个cygwin目标吗

完整的错误消息是

$ make
-- Configuring done
-- Generating done
-- Build files have been written to: /home/xxxx/Projects/sdlgame/Source/build
make[2]: *** No rule to make target 'cygwin', needed by 'cygsdlinterface.dll'.  Stop.
CMakeFiles/Makefile2:170: recipe for target 'Libraries/LEngine/sdlinterface/build/CMakeFiles/sdlinterface.dir/all' failed
make[1]: *** [Libraries/LEngine/sdlinterface/build/CMakeFiles/sdlinterface.dir/all] Error 2
Makefile:75: recipe for target 'all' failed
make: *** [all] Error 2

也许不是解决办法,但至少有一些想法

  • 使用“Unix Makefiles”生成器(您可能会这样做)
  • 在初始化之前使用项目\u源\u目录(项目\u包含\u目录)
  • 添加到add_LIBRARY的文件可能与${CMAKE_CURRENT_SOURCE_DIR}路径相关,因此不需要明确指定该路径
  • 您可以使用
    find_包(PkgConfig)
  • 使用
    ${SDL2\u库}
    ${SDL2\u LDFLAGS}
    而不是
    目标链接库(…SDL2)

  • 谢谢你的建议!不幸的是,这里没有解决这个问题。事实上,我没有使用Unix Makefiles生成器,但我忘了在cygwin环境中这是个好主意。