qmake -project
ソース ファイルとヘッダー ファイルのディレクトリから CMake プロジェクトを自動的に作成するのに相当するものはありますか?
理想的には、これは再帰的に機能するはずです。
qmake -project
ソース ファイルとヘッダー ファイルのディレクトリから CMake プロジェクトを自動的に作成するのに相当するものはありますか?
理想的には、これは再帰的に機能するはずです。
いいえ、しかしセットアップは簡単なプロジェクトです:
project(myProject)
enable_language(CXX)
file(GLOB SRC_FILES *.cpp)
include_directories(${PROJECT_SOURCE_DIR})
add_executable(myExe ${SRC_FILES})
実行可能ファイルを作成していると仮定します。add_library
ライブラリを作成している場合は、使用する必要があります。src
プロジェクトがや などのサブディレクトリにある場合は、パスを変更するだけinclude
です。
(これはかなり前に尋ねられたことは知っていますが、今後の参考のために、とにかく回答を投稿します。)
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
)、アイデアは得られます。