我正在创建一个库(称为fmi2),我打算在我的本地机器上安装(通过包管理器),然后链接到一堆其他库。
我将提供一个Findfmi2.cmake文件,以便我可以从其他库中调用private function addActionees($actionees, $id, $status) {
DB::beginTransaction();
try {
DB::table('task_assignee_user')->where('task_id', $id)->delete();
foreach ($actionees as $act) {
$actAdd = array(
'task_id' => $id,
'user_id' => $act->user_id,
);
DB::table('task_assignee')->insert($actAdd);
}
DB::commit();
return True;
} catch (Exception $ex) {
DB::rollback();
return FALSE;
}
}
,但是这个文件应该按常规安装在哪里?
以下是我考虑的一些选择及其问题:
find_package(fmi2)
/usr/share/cmake-3.8/Modules/Findfmi2.cmake
将正常工作find_package(fmi2)
/usr/share/cmake/Modules/Findfmi2.cmake
,这会导致任何可移植性。set(CMAKE_MODULES_PATH /usr/share/cmake/Modules)
${CMAKE_CURRENT_SOURCE_DIR}/cmake/Findfmi2.cmake
答案 0 :(得分:1)
您正在编写CMake中的内容。您不需要FindModule。这旨在找到外部非CMake输出。
This Stackoverflow post from ruslo应该可以帮助您了解find_package()
模块模式和配置模式之间的区别。它还回答了有关FindModule路径的问题,即它们被复制到您的CMake项目中,而不是在系统范围内发现,除非它们是与“模块”目录中的CMake捆绑在一起的官方FindModule的一部分。
现代CMake文档现在最终包含了创建配置模式包的好例子:cmake-packages
如果你想要显式的完整示例,虽然使用稍微较旧的config.cmake文件语法,ruslo在Github上有更多。