2

qmake -projectソース ファイルとヘッダー ファイルのディレクトリから CMake プロジェクトを自動的に作成するのに相当するものはありますか?

理想的には、これは再帰的に機能するはずです。

4

2 に答える 2

2

いいえ、しかしセットアップは簡単なプロジェクトです:

project(myProject)

enable_language(CXX)

file(GLOB SRC_FILES *.cpp)

include_directories(${PROJECT_SOURCE_DIR})

add_executable(myExe ${SRC_FILES})

実行可能ファイルを作成していると仮定します。add_libraryライブラリを作成している場合は、使用する必要があります。srcプロジェクトがや などのサブディレクトリにある場合は、パスを変更するだけincludeです。

于 2012-11-02T14:36:47.913 に答える
0

(これはかなり前に尋ねられたことは知っていますが、今後の参考のために、とにかく回答を投稿します。)

CMakeLists.txtより良いアイデアは、実行されるたびにすべてのソースを glob で自動的に追加するのではなく、代わりに静的なものを使用することだと思います。元々の意味は、現在のディレクトリを (再帰的に) スキャンしてソース ファイルを探し、それらを CMake ファイルに追加するスクリプトだったと思います。これにより、すべてのソース ファイルの名前を CMake ファイルにコピーする時間を大幅に節約できる可能性があります。したがって、自動化しましょう!

cmake-project.sh次の内容で名前が付けられたファイルを作成します。

#!/bin/bash

# use the first argument as project name
PROJECT_NAME=$1

# find source files, but exclude the build directory
PROJECT_SOURCES=$(find . -iname "*.cpp" -not -path "./build/*") 

# find header files, but exclude the build directory;
# only print the name of the directory; only print unique names
PROJECT_SOURCE_DIR=$(find . -iname "*.h" -not -path "./build/*" \
  -printf "%h\n" | sort -u) 

# The standard content of the CMakeLists.txt can be edited here
cat << EOF > CMakeLists.txt
cmake_minimum_required (VERSION 2.8)

set(PROJ_NAME      $PROJECT_NAME )
set(PROJ_SOURCES   $PROJECT_SOURCES )

project(\${PROJ_NAME})

include_directories(${PROJECT_SOURCE_DIR})

add_executable(\${PROJ_NAME} \${PROJ_SOURCES})
EOF

次に、ファイルを実行可能にしchmod +x cmake-project.shます。これで、ルート ディレクトリで実行./cmake-project.sh [your_project_name]して、静的 (つまり、グロブなし) をCMakeLists.txt自動的に作成できます。

もちろん、必要に応じて変更する必要がありますが (たとえば、.ccの代わりに使用するなど.cpp)、アイデアは得られます。

于 2014-10-07T15:35:12.980 に答える