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
C++ 什么';我的CMakeLists.txt文件有什么问题?_C++_Cmake - Fatal编程技术网

C++ 什么';我的CMakeLists.txt文件有什么问题?

C++ 什么';我的CMakeLists.txt文件有什么问题?,c++,cmake,C++,Cmake,我试图通过CMake编译一个非常小的程序,但当我编译它并尝试构建它时,它会给我一个错误: fatal error LNK1181: cannot open input file '.\cm_project.dir\SharedCRT-Release\dummy.obj' dummy.cpp是我的项目中的源文件。CMakeLists.txt文件如下所示: project( cm_project ) set(SOURCES src/dummy.cpp include/version.h

我试图通过CMake编译一个非常小的程序,但当我编译它并尝试构建它时,它会给我一个错误:

fatal error LNK1181: cannot open input file '.\cm_project.dir\SharedCRT-Release\dummy.obj'
dummy.cpp是我的项目中的源文件。CMakeLists.txt文件如下所示:

project( cm_project )

set(SOURCES 
  src/dummy.cpp
  include/version.h
)

add_library( cm_project STATIC ${SOURCES} )

set(LIBRARY_OUTPUT_PATH
  $(PlatformName)
)

我错过什么了吗?提前感谢。

这只是一个猜测,但可能是dummy.cpp由于错误而未编译,并且由于它未编译,链接器没有dummy.obj可链接,因此您会看到链接器错误。奇怪的是没有编译器错误(或没有报告)

我试图在我的系统上重现这一点,不幸的是,在本例中,这不是Windows,而是一个Mac,我的目标是Unix makefiles(
cmake-G“Unix makefiles”
)。我最初将dummy.cpp和version.h(包括在dummy.cpp中)与CMakeLists.txt放在同一个目录中,它工作正常。当我将dummy.cpp移到src子目录,将version.h移到include子目录时,编译中断,因为编译器不知道在哪里可以找到version.h。我需要添加一行这样的代码来告诉它在哪里:

include_directories(./include)

顺便说一句,我最初在我的CMakeLists.txt文件中有一行类似于
set(LIBRARY\u OUTPUT\u PATH$(PlatformName))
(PlatformName周围有括号),但在调用CMake之后,我得到了一个名为$(PlatformName)的目录。我把它改成在PlatformName(
set(LIBRARY\u OUTPUT\u PATH${PlatformName})
周围用大括号括起来,并且没有创建假目录。这可能与您的问题有关。

您为哪个平台构建?换句话说,你要传递什么给
cmake-G
@RandallCook:谢谢你的回复。我在Visual Studio 9 2008 Win64上运行它,它似乎与Visual Studio 10 2008(Win32)配合得很好。很遗憾,我无法访问您的设置。