1. ホーム
  2. c++

[解決済み] C++でCMakeがリンカ言語を決定できない

2022-09-22 05:20:41

質問

Windows 7 x64 で、Visual Studio 2010 と Cygwin の両方で cmake hello world プログラムを実行しようとしていますが、どちらも動作しないようです。私のディレクトリ構造は次のとおりです。

HelloWorld
-- CMakeLists.txt
-- src/
-- -- CMakeLists.txt
-- -- main.cpp
-- build/

をするのですが cd build の後に cmake .. というエラーが表示されます。

CMake Error: CMake can not determine linker language for target:helloworld
CMake Error: Cannot determine link language for target "helloworld".

しかし、main.cpp の拡張子を main.c に変更すると、ファイルシステム上と src/CMakeLists.txt の両方を変更すると、すべてが期待どおりに動作します。これは、Visual Studio コマンド プロンプト (Visual Studio Solution Generator) と Cygwin ターミナル (Unix Makefiles Generator) の両方から実行した場合のことです。

なぜこのコードが動作しないのか、何か思い当たることはありますか?

CMakeLists.txt

PROJECT(HelloWorld C)
cmake_minimum_required(VERSION 2.8)

# include the cmake modules directory
set(CMAKE_MODULE_PATH ${HelloWorld_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})

add_subdirectory(src)

src/CMakeLists.txt

# Include the directory itself as a path to include directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Create a variable called helloworld_SOURCES containing all .cpp files:
set(HelloWorld_SOURCES main.cpp)

# Create an executable file called helloworld from sources:
add_executable(hello ${HelloWorld_SOURCES })

src/main.cpp

int main()
{
  return 0;
}

どのように解決するのですか?

を変更してみてください。

PROJECT(HelloWorld C)

PROJECT(HelloWorld C CXX)

または単に

PROJECT(HelloWorld)

ご覧ください。 http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:project